#ifndef OS_H
#define OS_H
#include "misc.h"
#include <stdarg.h>
#include <string.h>
#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 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
#include <stdio.h>
#include <stdarg.h>
#ifdef DDXBEFORERESET
extern void ddxBeforeReset (void);
#endif
#ifdef DDXOSVERRORF
extern _X_EXPORT void (*OsVendorVErrorFProc)(const char *, va_list args);
#endif
extern _X_EXPORT int WaitForSomething(
int*
);
extern _X_EXPORT int ReadRequestFromClient(ClientPtr );
extern _X_EXPORT Bool InsertFakeRequest(
ClientPtr ,
char* ,
int );
extern _X_EXPORT void ResetCurrentRequest(ClientPtr );
extern _X_EXPORT void FlushAllOutput(void);
extern _X_EXPORT void FlushIfCriticalOutputPending(void);
extern _X_EXPORT void SetCriticalOutputPending(void);
extern _X_EXPORT int WriteToClient(ClientPtr , int , const void* );
extern _X_EXPORT void ResetOsBuffers(void);
extern _X_EXPORT void InitConnectionLimits(void);
extern _X_EXPORT void NotifyParentProcess(void);
extern _X_EXPORT void CreateWellKnownSockets(void);
extern _X_EXPORT void ResetWellKnownSockets(void);
extern _X_EXPORT void CloseWellKnownConnections(void);
extern _X_EXPORT XID AuthorizationIDOfClient(ClientPtr );
extern _X_EXPORT char *ClientAuthorized(
ClientPtr ,
unsigned int ,
char* ,
unsigned int ,
char* );
extern _X_EXPORT Bool EstablishNewConnections(
ClientPtr ,
pointer );
extern _X_EXPORT void CheckConnections(void);
extern _X_EXPORT void CloseDownConnection(ClientPtr );
extern _X_EXPORT void AddGeneralSocket(int );
extern _X_EXPORT void RemoveGeneralSocket(int );
extern _X_EXPORT void AddEnabledDevice(int );
extern _X_EXPORT void RemoveEnabledDevice(int );
extern _X_EXPORT int OnlyListenToOneClient(ClientPtr );
extern _X_EXPORT void ListenToAllClients(void);
extern _X_EXPORT void IgnoreClient(ClientPtr );
extern _X_EXPORT void AttendClient(ClientPtr );
extern _X_EXPORT void MakeClientGrabImpervious(ClientPtr );
extern _X_EXPORT void MakeClientGrabPervious(ClientPtr );
#ifdef XQUARTZ
extern void ListenOnOpenFD(int , int );
#endif
extern _X_EXPORT CARD32 GetTimeInMillis(void);
extern _X_EXPORT void AdjustWaitForDelay(
pointer ,
unsigned long );
typedef struct _OsTimerRec *OsTimerPtr;
typedef CARD32 (*OsTimerCallback)(
OsTimerPtr ,
CARD32 ,
pointer );
extern _X_EXPORT void TimerInit(void);
extern _X_EXPORT Bool TimerForce(OsTimerPtr );
#define TimerAbsolute (1<<0)
#define TimerForceOld (1<<1)
extern _X_EXPORT OsTimerPtr TimerSet(
OsTimerPtr ,
int ,
CARD32 ,
OsTimerCallback ,
pointer );
extern _X_EXPORT void TimerCheck(void);
extern _X_EXPORT void TimerCancel(OsTimerPtr );
extern _X_EXPORT void TimerFree(OsTimerPtr );
extern _X_EXPORT void SetScreenSaverTimer(void);
extern _X_EXPORT void FreeScreenSaverTimer(void);
extern _X_EXPORT void AutoResetServer(int );
extern _X_EXPORT void GiveUp(int );
extern _X_EXPORT void UseMsg(void);
extern _X_EXPORT void ProcessCommandLine(int , char* []);
extern _X_EXPORT int set_font_authorizations(
char ** ,
int * ,
pointer );
#ifndef _HAVE_XALLOC_DECLS
#define _HAVE_XALLOC_DECLS
extern _X_EXPORT void *Xalloc(unsigned long ) _X_DEPRECATED;
extern _X_EXPORT void *Xcalloc(unsigned long ) _X_DEPRECATED;
extern _X_EXPORT void *Xrealloc(void * , unsigned long )
_X_DEPRECATED;
extern _X_EXPORT void Xfree(void * ) _X_DEPRECATED;
#endif
extern _X_EXPORT void *XNFalloc(unsigned long );
extern _X_EXPORT void *XNFcalloc(unsigned long );
extern _X_EXPORT void *XNFrealloc(void * , unsigned long );
extern _X_EXPORT char *Xstrdup(const char *s);
extern _X_EXPORT char *XNFstrdup(const char *s);
#include "Xprintf.h"
extern _X_EXPORT char *Xprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED;
extern _X_EXPORT char *Xvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED;
extern _X_EXPORT char *XNFprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED;
extern _X_EXPORT char *XNFvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED;
typedef void (*OsSigHandlerPtr)(int );
typedef int (*OsSigWrapperPtr)(int );
extern _X_EXPORT OsSigHandlerPtr OsSignal(int , OsSigHandlerPtr );
extern _X_EXPORT OsSigWrapperPtr OsRegisterSigWrapper(OsSigWrapperPtr newWrap);
extern _X_EXPORT int auditTrailLevel;
extern _X_EXPORT void LockServer(void);
extern _X_EXPORT void UnlockServer(void);
extern _X_EXPORT int OsLookupColor(
int ,
char * ,
unsigned ,
unsigned short * ,
unsigned short * ,
unsigned short * );
extern _X_EXPORT void OsInit(void);
extern _X_EXPORT void OsCleanup(Bool);
extern _X_EXPORT void OsVendorFatalError(void);
extern _X_EXPORT void OsVendorInit(void);
extern _X_EXPORT void OsBlockSignals (void);
extern _X_EXPORT void OsReleaseSignals (void);
extern _X_EXPORT void OsAbort (void) _X_NORETURN;
#if !defined(WIN32)
extern _X_EXPORT int System(char *);
extern _X_EXPORT pointer Popen(char *, char *);
extern _X_EXPORT int Pclose(pointer);
extern _X_EXPORT pointer Fopen(char *, char *);
extern _X_EXPORT 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 _X_EXPORT void CheckUserParameters(int argc, char **argv, char **envp);
extern _X_EXPORT void CheckUserAuthorization(void);
extern _X_EXPORT int AddHost(
ClientPtr ,
int ,
unsigned ,
const void *);
extern _X_EXPORT Bool ForEachHostInFamily (
int ,
Bool (* )(
unsigned char * ,
short ,
pointer ),
pointer );
extern _X_EXPORT int RemoveHost(
ClientPtr ,
int ,
unsigned ,
pointer );
extern _X_EXPORT int GetHosts(
pointer * ,
int * ,
int * ,
BOOL * );
typedef struct sockaddr * sockaddrPtr;
extern _X_EXPORT int InvalidHost(sockaddrPtr , int , ClientPtr client);
extern _X_EXPORT int LocalClient(ClientPtr );
extern _X_EXPORT int LocalClientCred(ClientPtr, int *, int *);
#define LCC_UID_SET (1 << 0)
#define LCC_GID_SET (1 << 1)
#define LCC_PID_SET (1 << 2)
#define LCC_ZID_SET (1 << 3)
typedef struct {
int fieldsSet;
int euid;
int egid;
int nSuppGids;
int *pSuppGids;
int pid;
int zoneid;
} LocalClientCredRec;
extern _X_EXPORT int GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
extern _X_EXPORT void FreeLocalClientCreds(LocalClientCredRec *);
extern _X_EXPORT int ChangeAccessControl(ClientPtr , int );
extern _X_EXPORT int GetAccessControl(void);
extern _X_EXPORT void AddLocalHosts(void);
extern _X_EXPORT void ResetHosts(char *display);
extern _X_EXPORT void EnableLocalHost(void);
extern _X_EXPORT void DisableLocalHost(void);
extern _X_EXPORT void AccessUsingXdmcp(void);
extern _X_EXPORT void DefineSelf(int );
#if XDMCP
extern _X_EXPORT void AugmentSelf(pointer , int );
extern _X_EXPORT void RegisterAuthorizations(void);
#endif
extern _X_EXPORT void InitAuthorization(char * );
extern _X_EXPORT int AuthorizationFromID (
XID id,
unsigned short *name_lenp,
char **namep,
unsigned short *data_lenp,
char **datap);
extern _X_EXPORT XID CheckAuthorization(
unsigned int ,
const char * ,
unsigned int ,
const char * ,
ClientPtr ,
char **
);
extern _X_EXPORT void ResetAuthorization(void);
extern _X_EXPORT int RemoveAuthorization (
unsigned short name_length,
const char *name,
unsigned short data_length,
const char *data);
extern _X_EXPORT int AddAuthorization(
unsigned int ,
const char * ,
unsigned int ,
char * );
#ifdef XCSECURITY
extern _X_EXPORT XID GenerateAuthorization(
unsigned int ,
const char * ,
unsigned int ,
const char * ,
unsigned int * ,
char ** );
#endif
extern _X_EXPORT int ddxProcessArgument(int , char * [], int );
extern _X_EXPORT void ddxUseMsg(void);
extern _X_EXPORT CallbackListPtr ReplyCallback;
typedef struct {
ClientPtr client;
const void *replyData;
unsigned long dataLenBytes;
unsigned long bytesRemaining;
Bool startOfReply;
} ReplyInfoRec;
extern _X_EXPORT CallbackListPtr FlushCallback;
extern _X_EXPORT void AbortDDX(void);
extern _X_EXPORT void ddxGiveUp(void);
extern _X_EXPORT int TimeSinceLastInputEvent(void);
#if NEED_STRCASECMP
#define strcasecmp xstrcasecmp
extern _X_EXPORT int xstrcasecmp(const char *s1, const char *s2);
#endif
#if NEED_STRNCASECMP
#define strncasecmp xstrncasecmp
extern _X_EXPORT int xstrncasecmp(const char *s1, const char *s2, size_t n);
#endif
#if NEED_STRCASESTR
#define strcasestr xstrcasestr
extern _X_EXPORT char *xstrcasestr(const char *s, const char *find);
#endif
#ifndef HAS_STRLCPY
extern _X_EXPORT size_t strlcpy(char *dst, const char *src, size_t siz);
extern _X_EXPORT size_t strlcat(char *dst, const char *src, size_t siz);
#endif
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;
extern _X_EXPORT const char *LogInit(const char *fname, const char *backup);
extern _X_EXPORT void LogClose(void);
extern _X_EXPORT Bool LogSetParameter(LogParameter param, int value);
extern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args);
extern _X_EXPORT void LogWrite(int verb, const char *f, ...) _X_ATTRIBUTE_PRINTF(2,3);
extern _X_EXPORT void LogVMessageVerb(MessageType type, int verb, const char *format,
va_list args);
extern _X_EXPORT void LogMessageVerb(MessageType type, int verb, const char *format,
...) _X_ATTRIBUTE_PRINTF(3,4);
extern _X_EXPORT void LogMessage(MessageType type, const char *format, ...)
_X_ATTRIBUTE_PRINTF(2,3);
extern _X_EXPORT void FreeAuditTimer(void);
extern _X_EXPORT void AuditF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2);
extern _X_EXPORT void VAuditF(const char *f, va_list args);
extern _X_EXPORT void FatalError(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_NORETURN;
#ifdef DEBUG
#define DebugF ErrorF
#else
#define DebugF(...)
#endif
extern _X_EXPORT void VErrorF(const char *f, va_list args);
extern _X_EXPORT void ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2);
extern _X_EXPORT void Error(const char *str);
extern _X_EXPORT void LogPrintMarkers(void);
extern _X_EXPORT void xorg_backtrace(void);
#endif