Blame winpr/libwinpr/handle/nonehandle.c

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