#ifndef OS_H
#define OS_H
#include "misc.h"
#define ALLOCATE_LOCAL_FALLBACK(_size) Xalloc((unsigned long)(_size))
#define DEALLOCATE_LOCAL_FALLBACK(_ptr) Xfree((pointer)(_ptr))
#include "Xalloca.h"
#ifndef IN_MODULE
#include <stdarg.h>
#else
#include "xf86_ansic.h"
#endif
#define NullFID ((FID) 0)
#define SCREEN_SAVER_ON 0
#define SCREEN_SAVER_OFF 1
#define SCREEN_SAVER_FORCER 2
#define SCREEN_SAVER_CYCLE 3
#ifndef MAX_REQUEST_SIZE
#define MAX_REQUEST_SIZE 65535
#endif
#ifndef MAX_BIG_REQUEST_SIZE
#define MAX_BIG_REQUEST_SIZE 4194303
#endif
typedef pointer FID;
typedef struct _FontPathRec *FontPathPtr;
typedef struct _NewClientRec *NewClientPtr;
#ifndef xalloc
#define xnfalloc(size) XNFalloc((unsigned long)(size))
#define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size))
#define xnfrealloc(ptr, size) XNFrealloc((pointer)(ptr), (unsigned long)(size))
#define xalloc(size) Xalloc((unsigned long)(size))
#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size))
#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size))
#define xfree(ptr) Xfree((pointer)(ptr))
#define xstrdup(s) Xstrdup(s)
#define xnfstrdup(s) XNFstrdup(s)
#endif
#ifndef IN_MODULE
#ifdef SCO
#include <stdio.h>
#endif
#include <string.h>
#endif
#ifdef SIGNALRETURNSINT
#define SIGVAL int
#else
#define SIGVAL void
#endif
extern Bool OsDelayInitColors;
extern void (*OsVendorVErrorFProc)(const char *, va_list args);
extern int WaitForSomething(
int*
);
#ifdef LBX
#define ReadRequestFromClient(client) ((client)->readRequest(client))
extern int StandardReadRequestFromClient(ClientPtr );
extern int ClientConnectionNumber(ClientPtr );
#else
extern int ReadRequestFromClient(ClientPtr );
#endif
extern Bool InsertFakeRequest(
ClientPtr ,
char* ,
int );
extern void ResetCurrentRequest(ClientPtr );
extern void FlushAllOutput(void);
extern void FlushIfCriticalOutputPending(void);
extern void SetCriticalOutputPending(void);
extern int WriteToClient(ClientPtr , int , char* );
extern void ResetOsBuffers(void);
extern void InitConnectionLimits(void);
extern void CreateWellKnownSockets(void);
extern void ResetWellKnownSockets(void);
extern void CloseWellKnownConnections(void);
extern XID AuthorizationIDOfClient(ClientPtr );
extern char *ClientAuthorized(
ClientPtr ,
unsigned int ,
char* ,
unsigned int ,
char* );
extern Bool EstablishNewConnections(
ClientPtr ,
pointer );
extern void CheckConnections(void);
extern void CloseDownConnection(ClientPtr );
extern void AddEnabledDevice(int );
extern void RemoveEnabledDevice(int );
extern void OnlyListenToOneClient(ClientPtr );
extern void ListenToAllClients(void);
extern void IgnoreClient(ClientPtr );
extern void AttendClient(ClientPtr );
extern void MakeClientGrabImpervious(ClientPtr );
extern void MakeClientGrabPervious(ClientPtr );
#ifdef LBX
extern void CloseDownFileDescriptor(ClientPtr );
#endif
extern void AvailableClientInput(ClientPtr );
extern CARD32 GetTimeInMillis(void);
extern void AdjustWaitForDelay(
pointer ,
unsigned long );
typedef struct _OsTimerRec *OsTimerPtr;
typedef CARD32 (*OsTimerCallback)(
OsTimerPtr ,
CARD32 ,
pointer );
extern void TimerInit(void);
extern Bool TimerForce(OsTimerPtr );
#define TimerAbsolute (1<<0)
#define TimerForceOld (1<<1)
extern OsTimerPtr TimerSet(
OsTimerPtr ,
int ,
CARD32 ,
OsTimerCallback ,
pointer );
extern void TimerCheck(void);
extern void TimerCancel(OsTimerPtr );
extern void TimerFree(OsTimerPtr );
extern void SetScreenSaverTimer(void);
extern void FreeScreenSaverTimer(void);
#ifdef DPMSExtension
extern void SetDPMSTimers(void);
extern void FreeDPMSTimers(void);
#endif
extern SIGVAL AutoResetServer(int );
extern SIGVAL GiveUp(int );
extern void UseMsg(void);
extern void ProcessCommandLine(int , char* []);
extern int set_font_authorizations(
char ** ,
int * ,
pointer );
#ifndef _HAVE_XALLOC_DECLS
#define _HAVE_XALLOC_DECLS
extern pointer Xalloc(unsigned long );
extern pointer Xcalloc(unsigned long );
extern pointer Xrealloc(pointer , unsigned long );
extern void Xfree(pointer );
#endif
extern pointer XNFalloc(unsigned long );
extern pointer XNFcalloc(unsigned long );
extern pointer XNFrealloc(pointer , unsigned long );
extern void OsInitAllocator(void);
extern char *Xstrdup(const char *s);
extern char *XNFstrdup(const char *s);
typedef SIGVAL (*OsSigHandlerPtr)(int );
extern OsSigHandlerPtr OsSignal(int , OsSigHandlerPtr );
extern int auditTrailLevel;
#ifdef SERVER_LOCK
extern void LockServer(void);
extern void UnlockServer(void);
#endif
extern int OsLookupColor(
int ,
char * ,
unsigned ,
unsigned short * ,
unsigned short * ,
unsigned short * );
extern void OsInit(void);
extern void OsCleanup(Bool);
extern void OsVendorFatalError(void);
extern void OsVendorInit(void);
extern int OsInitColors(void);
void OsBlockSignals (void);
void OsReleaseSignals (void);
#if !defined(WIN32) && !defined(__UNIXOS2__)
extern int System(char *);
extern pointer Popen(char *, char *);
extern int Pclose(pointer);
extern pointer Fopen(char *, char *);
extern int Fclose(pointer);
#else
#define System(a) system(a)
#define Popen(a,b) popen(a,b)
#define Pclose(a) pclose(a)
#define Fopen(a,b) fopen(a,b)
#define Fclose(a) fclose(a)
#endif
extern void CheckUserParameters(int argc, char **argv, char **envp);
extern void CheckUserAuthorization(void);
extern int AddHost(
ClientPtr ,
int ,
unsigned ,
pointer );
extern Bool ForEachHostInFamily (
int ,
Bool (* )(
unsigned char * ,
short ,
pointer ),
pointer );
extern int RemoveHost(
ClientPtr ,
int ,
unsigned ,
pointer );
extern int GetHosts(
pointer * ,
int * ,
int * ,
BOOL * );
typedef struct sockaddr * sockaddrPtr;
extern int InvalidHost(sockaddrPtr , int );
extern int LocalClient(ClientPtr );
extern int LocalClientCred(ClientPtr, int *, int *);
extern int ChangeAccessControl(ClientPtr , int );
extern int GetAccessControl(void);
extern void AddLocalHosts(void);
extern void ResetHosts(char *display);
extern void EnableLocalHost(void);
extern void DisableLocalHost(void);
extern void AccessUsingXdmcp(void);
extern void DefineSelf(int );
extern void AugmentSelf(pointer , int );
extern void InitAuthorization(char * );
extern void RegisterAuthorizations(void);
extern XID AuthorizationToID (
unsigned short name_length,
char *name,
unsigned short data_length,
char *data);
extern int AuthorizationFromID (
XID id,
unsigned short *name_lenp,
char **namep,
unsigned short *data_lenp,
char **datap);
extern XID CheckAuthorization(
unsigned int ,
char * ,
unsigned int ,
char * ,
ClientPtr ,
char **
);
extern void ResetAuthorization(void);
extern int RemoveAuthorization (
unsigned short name_length,
char *name,
unsigned short data_length,
char *data);
extern int AddAuthorization(
unsigned int ,
char * ,
unsigned int ,
char * );
extern XID GenerateAuthorization(
unsigned int ,
char * ,
unsigned int ,
char * ,
unsigned int * ,
char ** );
#ifdef COMMANDLINE_CHALLENGED_OPERATING_SYSTEMS
extern void ExpandCommandLine(int * , char *** );
#endif
extern int ddxProcessArgument(int , char * [], int );
extern void ddxUseMsg(void);
extern xReqPtr PeekNextRequest(xReqPtr req, ClientPtr client, Bool readmore);
extern void SkipRequests(xReqPtr req, ClientPtr client, int numskipped);
#define ReqLen(_pxReq, _client) \
((_pxReq->length ? \
(_client->swapped ? lswaps(_pxReq->length) : _pxReq->length) \
: ((_client->swapped ? \
lswapl(((CARD32*)_pxReq)[1]) : ((CARD32*)_pxReq)[1])-1) \
) << 2)
#define CastxReq(_pxReq, otherReqTypePtr) \
(_pxReq->length ? (otherReqTypePtr)_pxReq \
: (otherReqTypePtr)(((CARD32*)_pxReq)+1))
extern CallbackListPtr SkippedRequestsCallback;
typedef struct {
xReqPtr req;
ClientPtr client;
int numskipped;
} SkippedRequestInfoRec;
extern CallbackListPtr ReplyCallback;
typedef struct {
ClientPtr client;
pointer replyData;
unsigned long dataLenBytes;
unsigned long bytesRemaining;
Bool startOfReply;
} ReplyInfoRec;
extern CallbackListPtr FlushCallback;
extern void AbortDDX(void);
extern void ddxGiveUp(void);
extern int TimeSinceLastInputEvent(void);
typedef enum _LogParameter {
XLOG_FLUSH,
XLOG_SYNC,
XLOG_VERBOSITY,
XLOG_FILE_VERBOSITY
} LogParameter;
typedef enum {
X_PROBED,
X_CONFIG,
X_DEFAULT,
X_CMDLINE,
X_NOTICE,
X_ERROR,
X_WARNING,
X_INFO,
X_NONE,
X_NOT_IMPLEMENTED,
X_UNKNOWN = -1
} MessageType;
#if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4)))
#define _printf_attribute(a,b) __attribute((format(printf,a,b)))
#else
#define _printf_attribute(a,b)
#endif
#ifdef printf
#define printf_defined
#undef printf
#endif
extern const char *LogInit(const char *fname, const char *backup);
extern void LogClose(void);
extern Bool LogSetParameter(LogParameter param, int value);
extern void LogVWrite(int verb, const char *f, va_list args);
extern void LogWrite(int verb, const char *f, ...) _printf_attribute(2,3);
extern void LogVMessageVerb(MessageType type, int verb, const char *format,
va_list args);
extern void LogMessageVerb(MessageType type, int verb, const char *format,
...) _printf_attribute(3,4);
extern void LogMessage(MessageType type, const char *format, ...)
_printf_attribute(2,3);
extern void FreeAuditTimer(void);
extern void AuditF(const char *f, ...) _printf_attribute(1,2);
extern void VAuditF(const char *f, va_list args);
extern void FatalError(const char *f, ...) _printf_attribute(1,2)
#if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4)))
__attribute((noreturn))
#endif
;
extern void VErrorF(const char *f, va_list args);
extern void ErrorF(const char *f, ...) _printf_attribute(1,2);
extern void Error(char *str);
extern void LogPrintMarkers(void);
#if defined(NEED_SNPRINTF) && !defined(IN_MODULE)
extern int snprintf(char *str, size_t size, const char *format, ...)
_printf_attribute(3,4);
extern int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif
#ifdef printf_defined
#define printf xf86printf
#undef printf_defined
#endif
#endif