Blame winpr/libwinpr/handle/nonehandle.c

Packit 1fb8d4
/**
Packit 1fb8d4
 * WinPR: Windows Portable Runtime
Packit 1fb8d4
 * NoneHandle a.k.a. brathandle should be used where a handle is needed, but
Packit 1fb8d4
 * functionality is not implemented yet or not implementable.
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2014 DI (FH) Martin Haimberger <martin.haimberger@thincast.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifdef HAVE_CONFIG_H
Packit 1fb8d4
#include "config.h"
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#include "nonehandle.h"
Packit 1fb8d4
Packit 1fb8d4
#ifndef _WIN32
Packit 1fb8d4
Packit 1fb8d4
#include <pthread.h>
Packit 1fb8d4
Packit 1fb8d4
static BOOL NoneHandleCloseHandle(HANDLE handle)
Packit 1fb8d4
{
Packit 1fb8d4
	WINPR_NONE_HANDLE* none = (WINPR_NONE_HANDLE*) handle;
Packit 1fb8d4
	free(none);
Packit 1fb8d4
	return TRUE;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
static BOOL NoneHandleIsHandle(HANDLE handle)
Packit 1fb8d4
{
Packit 1fb8d4
	WINPR_NONE_HANDLE* none = (WINPR_NONE_HANDLE*) handle;
Packit 1fb8d4
Packit 1fb8d4
	if (!none || none->Type != HANDLE_TYPE_NONE)
Packit 1fb8d4
	{
Packit 1fb8d4
		SetLastError(ERROR_INVALID_HANDLE);
Packit 1fb8d4
		return FALSE;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	return TRUE;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
static int NoneHandleGetFd(HANDLE handle)
Packit 1fb8d4
{
Packit 1fb8d4
	if (!NoneHandleIsHandle(handle))
Packit 1fb8d4
		return -1;
Packit 1fb8d4
Packit 1fb8d4
	return -1;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
static HANDLE_OPS ops =
Packit 1fb8d4
{
Packit 1fb8d4
	NoneHandleIsHandle,
Packit 1fb8d4
	NoneHandleCloseHandle,
Packit 1fb8d4
	NoneHandleGetFd,
Packit 1fb8d4
	NULL, /* CleanupHandle */
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL,
Packit 1fb8d4
	NULL
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
HANDLE CreateNoneHandle()
Packit 1fb8d4
{
Packit 1fb8d4
	WINPR_NONE_HANDLE* none;
Packit 1fb8d4
	none = (WINPR_NONE_HANDLE*) calloc(1, sizeof(WINPR_NONE_HANDLE));
Packit 1fb8d4
Packit 1fb8d4
	if (!none)
Packit 1fb8d4
		return NULL;
Packit 1fb8d4
Packit 1fb8d4
	none->ops = &ops;
Packit 1fb8d4
	return (HANDLE)none;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#endif