b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/***********************************************************
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCopyright 1987, 1998 The Open Group
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncthe above copyright notice appear in all copies and that both that
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynccopyright notice and this permission notice appear in supporting
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncdocumentation.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncThe above copyright notice and this permission notice shall be included in
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncall copies or substantial portions of the Software.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncin this Software without prior written authorization from The Open Group.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync All Rights Reserved
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncPermission to use, copy, modify, and distribute this software and its
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncdocumentation for any purpose and without fee is hereby granted,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncprovided that the above copyright notice appear in all copies and that
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncboth that copyright notice and this permission notice appear in
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncsupporting documentation, and that the name of Digital not be
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncused in advertising or publicity pertaining to distribution of the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncsoftware without specific, written prior permission.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncSOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync******************************************************************/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef OS_H
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define OS_H
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "misc.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <stdarg.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define SCREEN_SAVER_ON 0
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define SCREEN_SAVER_OFF 1
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define SCREEN_SAVER_FORCER 2
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define SCREEN_SAVER_CYCLE 3
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef MAX_REQUEST_SIZE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define MAX_REQUEST_SIZE 65535
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef MAX_BIG_REQUEST_SIZE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define MAX_BIG_REQUEST_SIZE 4194303
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _FontPathRec *FontPathPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _NewClientRec *NewClientPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef xalloc
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xnfalloc(size) XNFalloc((unsigned long)(size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xnfrealloc(ptr, size) XNFrealloc((pointer)(ptr), (unsigned long)(size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xalloc(size) Xalloc((unsigned long)(size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xfree(ptr) Xfree((pointer)(ptr))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xstrdup(s) Xstrdup(s)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xnfstrdup(s) XNFstrdup(s)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <stdio.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include <stdarg.h>
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifdef DDXBEFORERESET
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void ddxBeforeReset (void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifdef DDXOSVERRORF
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void (*OsVendorVErrorFProc)(const char *, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int WaitForSomething(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int* /*pClientsReady*/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool InsertFakeRequest(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*client*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*data*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*count*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetCurrentRequest(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FlushAllOutput(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FlushIfCriticalOutputPending(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void SetCriticalOutputPending(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int WriteToClient(ClientPtr /*who*/, int /*count*/, const void* /*buf*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetOsBuffers(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void InitConnectionLimits(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void NotifyParentProcess(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CreateWellKnownSockets(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetWellKnownSockets(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CloseWellKnownConnections(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT XID AuthorizationIDOfClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *ClientAuthorized(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*client*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*proto_n*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*auth_proto*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*string_n*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*auth_string*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool EstablishNewConnections(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*clientUnused*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /*closure*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CheckConnections(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CloseDownConnection(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AddGeneralSocket(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void RemoveGeneralSocket(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AddEnabledDevice(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void RemoveEnabledDevice(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int OnlyListenToOneClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ListenToAllClients(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void IgnoreClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AttendClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifdef XQUARTZ
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void ListenOnOpenFD(int /* fd */, int /* noxauth */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT CARD32 GetTimeInMillis(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AdjustWaitForDelay(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /*waitTime*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long /*newdelay*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _OsTimerRec *OsTimerPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef CARD32 (*OsTimerCallback)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync OsTimerPtr /* timer */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 /* time */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /* arg */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerInit(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool TimerForce(OsTimerPtr /* timer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define TimerAbsolute (1<<0)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define TimerForceOld (1<<1)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT OsTimerPtr TimerSet(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync OsTimerPtr /* timer */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* flags */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 /* millis */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync OsTimerCallback /* func */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /* arg */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerCheck(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerCancel(OsTimerPtr /* pTimer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerFree(OsTimerPtr /* pTimer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void SetScreenSaverTimer(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FreeScreenSaverTimer(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AutoResetServer(int /*sig*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void GiveUp(int /*sig*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void UseMsg(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ProcessCommandLine(int /*argc*/, char* /*argv*/[]);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int set_font_authorizations(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char ** /* authorizations */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*authlen */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /* client */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef _HAVE_XALLOC_DECLS
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _HAVE_XALLOC_DECLS
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer Xalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer Xcalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer Xrealloc(pointer /*ptr*/, unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void Xfree(pointer /*ptr*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer XNFalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer XNFcalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer XNFrealloc(pointer /*ptr*/, unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *Xstrdup(const char *s);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *XNFstrdup(const char *s);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *Xprintf(const char *fmt, ...);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *Xvprintf(const char *fmt, va_list va);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *XNFprintf(const char *fmt, ...);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *XNFvprintf(const char *fmt, va_list va);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*OsSigHandlerPtr)(int /* sig */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef int (*OsSigWrapperPtr)(int /* sig */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT OsSigHandlerPtr OsSignal(int /* sig */, OsSigHandlerPtr /* handler */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT OsSigWrapperPtr OsRegisterSigWrapper(OsSigWrapperPtr newWrap);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int auditTrailLevel;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LockServer(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void UnlockServer(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int OsLookupColor(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*screen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*len*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pred*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pgreen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pblue*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsInit(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsCleanup(Bool);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsVendorFatalError(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsVendorInit(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsBlockSignals (void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsReleaseSignals (void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void OsAbort (void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if !defined(WIN32)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int System(char *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer Popen(char *, char *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int Pclose(pointer);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer Fopen(char *, char *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int Fclose(pointer);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#else
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define System(a) system(a)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define Popen(a,b) popen(a,b)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define Pclose(a) pclose(a)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define Fopen(a,b) fopen(a,b)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define Fclose(a) fclose(a)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CheckUserParameters(int argc, char **argv, char **envp);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CheckUserAuthorization(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int AddHost(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*client*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /*pAddr*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool ForEachHostInFamily (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (* /*func*/ )(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char * /* addr */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short /* len */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /* closure */),
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /*closure*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int RemoveHost(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*client*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer /*pAddr*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int GetHosts(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer * /*data*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*pnHosts*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*pLen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync BOOL * /*pEnabled*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct sockaddr * sockaddrPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int InvalidHost(sockaddrPtr /*saddr*/, int /*len*/, ClientPtr client);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int LocalClient(ClientPtr /* client */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int LocalClientCred(ClientPtr, int *, int *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define LCC_UID_SET (1 << 0)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define LCC_GID_SET (1 << 1)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define LCC_PID_SET (1 << 2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define LCC_ZID_SET (1 << 3)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int fieldsSet; /* Bit mask of fields set */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int euid; /* Effective uid */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int egid; /* Primary effective group id */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int nSuppGids; /* Number of supplementary group ids */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *pSuppGids; /* Array of supplementary group ids */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int pid; /* Process id */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int zoneid; /* Only set on Solaris 10 & later */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} LocalClientCredRec;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FreeLocalClientCreds(LocalClientCredRec *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ChangeAccessControl(ClientPtr /*client*/, int /*fEnabled*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int GetAccessControl(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AddLocalHosts(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetHosts(char *display);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void EnableLocalHost(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void DisableLocalHost(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AccessUsingXdmcp(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void DefineSelf(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if XDMCP
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AugmentSelf(pointer /*from*/, int /*len*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void RegisterAuthorizations(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void InitAuthorization(char * /*filename*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* extern int LoadAuthorization(void); */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int AuthorizationFromID (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XID id,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short *name_lenp,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char **namep,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short *data_lenp,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char **datap);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT XID CheckAuthorization(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*namelength*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*datalength*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*data*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr /*client*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char ** /*reason*/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetAuthorization(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int RemoveAuthorization (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short name_length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char *name,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short data_length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char *data);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int AddAuthorization(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*name_length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*data_length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*data*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifdef XCSECURITY
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT XID GenerateAuthorization(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /* name_length */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* name */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /* data_length */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* data */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int * /* data_length_return */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char ** /* data_return */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ddxProcessArgument(int /*argc*/, char * /*argv*/ [], int /*i*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ddxUseMsg(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* int ReqLen(xReq *req, ClientPtr client)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Given a pointer to a *complete* request, return its length in bytes.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Note that if the request is a big request (as defined in the Big
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Requests extension), the macro lies by returning 4 less than the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * length that it actually occupies in the request buffer. This is so you
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * can blindly compare the length with the various sz_<request> constants
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * in Xproto.h without having to know/care about big requests.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define ReqLen(_pxReq, _client) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ((_pxReq->length ? \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync (_client->swapped ? lswaps(_pxReq->length) : _pxReq->length) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync : ((_client->swapped ? \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync lswapl(((CARD32*)_pxReq)[1]) : ((CARD32*)_pxReq)[1])-1) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ) << 2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* otherReqTypePtr CastxReq(xReq *req, otherReqTypePtr)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Cast the given request to one of type otherReqTypePtr to access
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * fields beyond the length field.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define CastxReq(_pxReq, otherReqTypePtr) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync (_pxReq->length ? (otherReqTypePtr)_pxReq \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync : (otherReqTypePtr)(((CARD32*)_pxReq)+1))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* stuff for ReplyCallback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT CallbackListPtr ReplyCallback;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ClientPtr client;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync const void *replyData;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long dataLenBytes;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long bytesRemaining;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool startOfReply;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} ReplyInfoRec;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* stuff for FlushCallback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT CallbackListPtr FlushCallback;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AbortDDX(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ddxGiveUp(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int TimeSinceLastInputEvent(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* strcasecmp.c */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if NEED_STRCASECMP
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define strcasecmp xstrcasecmp
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int xstrcasecmp(const char *s1, const char *s2);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if NEED_STRNCASECMP
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define strncasecmp xstrncasecmp
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int xstrncasecmp(const char *s1, const char *s2, size_t n);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if NEED_STRCASESTR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define strcasestr xstrcasestr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *xstrcasestr(const char *s, const char *find);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef HAS_STRLCPY
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT size_t strlcpy(char *dst, const char *src, size_t siz);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT size_t strlcat(char *dst, const char *src, size_t siz);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* Logging. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum _LogParameter {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XLOG_FLUSH,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XLOG_SYNC,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XLOG_VERBOSITY,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XLOG_FILE_VERBOSITY
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} LogParameter;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* Flags for log messages. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_PROBED, /* Value was probed */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_CONFIG, /* Value was given in the config file */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_DEFAULT, /* Value is a default */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_CMDLINE, /* Value was given on the command line */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_NOTICE, /* Notice */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_ERROR, /* Error message */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_WARNING, /* Warning message */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_INFO, /* Informational message */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_NONE, /* No prefix */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_NOT_IMPLEMENTED, /* Not implemented */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_UNKNOWN = -1 /* unknown -- this must always be last */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} MessageType;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* XXX Need to check which GCC versions have the format(printf) attribute. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if defined(__GNUC__) && (__GNUC__ > 2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _printf_attribute(a,b) __attribute((format(__printf__,a,b)))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#else
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _printf_attribute(a,b) /**/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT const char *LogInit(const char *fname, const char *backup);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogClose(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool LogSetParameter(LogParameter param, int value);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogWrite(int verb, const char *f, ...) _printf_attribute(2,3);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogVMessageVerb(MessageType type, int verb, const char *format,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogMessageVerb(MessageType type, int verb, const char *format,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ...) _printf_attribute(3,4);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogMessage(MessageType type, const char *format, ...)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync _printf_attribute(2,3);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FreeAuditTimer(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AuditF(const char *f, ...) _printf_attribute(1,2);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void VAuditF(const char *f, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FatalError(const char *f, ...) _printf_attribute(1,2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if defined(__GNUC__) && (__GNUC__ > 2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync__attribute((noreturn))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifdef DEBUG
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define DebugF ErrorF
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#else
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define DebugF(...) /* */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void VErrorF(const char *f, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ErrorF(const char *f, ...) _printf_attribute(1,2);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void Error(char *str);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogPrintMarkers(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void xorg_backtrace(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* OS_H */