1706f2543Smrg/*********************************************************** 2706f2543Smrg 3706f2543SmrgCopyright 1987, 1998 The Open Group 4706f2543Smrg 5706f2543SmrgPermission to use, copy, modify, distribute, and sell this software and its 6706f2543Smrgdocumentation for any purpose is hereby granted without fee, provided that 7706f2543Smrgthe above copyright notice appear in all copies and that both that 8706f2543Smrgcopyright notice and this permission notice appear in supporting 9706f2543Smrgdocumentation. 10706f2543Smrg 11706f2543SmrgThe above copyright notice and this permission notice shall be included in 12706f2543Smrgall copies or substantial portions of the Software. 13706f2543Smrg 14706f2543SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15706f2543SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16706f2543SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17706f2543SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 18706f2543SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19706f2543SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20706f2543Smrg 21706f2543SmrgExcept as contained in this notice, the name of The Open Group shall not be 22706f2543Smrgused in advertising or otherwise to promote the sale, use or other dealings 23706f2543Smrgin this Software without prior written authorization from The Open Group. 24706f2543Smrg 25706f2543Smrg 26706f2543SmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 27706f2543Smrg 28706f2543Smrg All Rights Reserved 29706f2543Smrg 30706f2543SmrgPermission to use, copy, modify, and distribute this software and its 31706f2543Smrgdocumentation for any purpose and without fee is hereby granted, 32706f2543Smrgprovided that the above copyright notice appear in all copies and that 33706f2543Smrgboth that copyright notice and this permission notice appear in 34706f2543Smrgsupporting documentation, and that the name of Digital not be 35706f2543Smrgused in advertising or publicity pertaining to distribution of the 36706f2543Smrgsoftware without specific, written prior permission. 37706f2543Smrg 38706f2543SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 39706f2543SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 40706f2543SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 41706f2543SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 42706f2543SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 43706f2543SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 44706f2543SmrgSOFTWARE. 45706f2543Smrg 46706f2543Smrg******************************************************************/ 47706f2543Smrg 48706f2543Smrg 49706f2543Smrg#ifndef OS_H 50706f2543Smrg#define OS_H 51706f2543Smrg 52706f2543Smrg#include "misc.h" 53706f2543Smrg#include <stdarg.h> 54706f2543Smrg#include <string.h> 55706f2543Smrg 56706f2543Smrg#define SCREEN_SAVER_ON 0 57706f2543Smrg#define SCREEN_SAVER_OFF 1 58706f2543Smrg#define SCREEN_SAVER_FORCER 2 59706f2543Smrg#define SCREEN_SAVER_CYCLE 3 60706f2543Smrg 61706f2543Smrg#ifndef MAX_REQUEST_SIZE 62706f2543Smrg#define MAX_REQUEST_SIZE 65535 63706f2543Smrg#endif 64706f2543Smrg#ifndef MAX_BIG_REQUEST_SIZE 65706f2543Smrg#define MAX_BIG_REQUEST_SIZE 4194303 66706f2543Smrg#endif 67706f2543Smrg 68706f2543Smrgtypedef struct _FontPathRec *FontPathPtr; 69706f2543Smrgtypedef struct _NewClientRec *NewClientPtr; 70706f2543Smrg 71706f2543Smrg#ifndef xalloc 72706f2543Smrg#define xnfalloc(size) XNFalloc((unsigned long)(size)) 73706f2543Smrg#define xnfcalloc(_num, _size) XNFcalloc((unsigned long)(_num)*(unsigned long)(_size)) 74706f2543Smrg#define xnfrealloc(ptr, size) XNFrealloc((pointer)(ptr), (unsigned long)(size)) 75706f2543Smrg 76706f2543Smrg#define xalloc(size) Xalloc((unsigned long)(size)) 77706f2543Smrg#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size)) 78706f2543Smrg#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size)) 79706f2543Smrg#define xfree(ptr) Xfree((pointer)(ptr)) 80706f2543Smrg#define xstrdup(s) Xstrdup(s) 81706f2543Smrg#define xnfstrdup(s) XNFstrdup(s) 82706f2543Smrg#endif 83706f2543Smrg 84706f2543Smrg#include <stdio.h> 85706f2543Smrg#include <stdarg.h> 86706f2543Smrg#include <string.h> 87706f2543Smrg#include <strings.h> 88706f2543Smrg 89706f2543Smrg 90706f2543Smrg#ifdef DDXBEFORERESET 91706f2543Smrgextern void ddxBeforeReset (void); 92706f2543Smrg#endif 93706f2543Smrg 94706f2543Smrg#ifdef DDXOSVERRORF 95706f2543Smrgextern _X_EXPORT void (*OsVendorVErrorFProc)(const char *, va_list args); 96706f2543Smrg#endif 97706f2543Smrg 98706f2543Smrgextern _X_EXPORT int WaitForSomething( 99706f2543Smrg int* /*pClientsReady*/ 100706f2543Smrg); 101706f2543Smrg 102706f2543Smrgextern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client*/); 103706f2543Smrg 104706f2543Smrgextern _X_EXPORT Bool InsertFakeRequest( 105706f2543Smrg ClientPtr /*client*/, 106706f2543Smrg char* /*data*/, 107706f2543Smrg int /*count*/); 108706f2543Smrg 109706f2543Smrgextern _X_EXPORT void ResetCurrentRequest(ClientPtr /*client*/); 110706f2543Smrg 111706f2543Smrgextern _X_EXPORT void FlushAllOutput(void); 112706f2543Smrg 113706f2543Smrgextern _X_EXPORT void FlushIfCriticalOutputPending(void); 114706f2543Smrg 115706f2543Smrgextern _X_EXPORT void SetCriticalOutputPending(void); 116706f2543Smrg 117706f2543Smrgextern _X_EXPORT int WriteToClient(ClientPtr /*who*/, int /*count*/, const void* /*buf*/); 118706f2543Smrg 119706f2543Smrgextern _X_EXPORT void ResetOsBuffers(void); 120706f2543Smrg 121706f2543Smrgextern _X_EXPORT void InitConnectionLimits(void); 122706f2543Smrg 123706f2543Smrgextern _X_EXPORT void NotifyParentProcess(void); 124706f2543Smrg 125706f2543Smrgextern _X_EXPORT void CreateWellKnownSockets(void); 126706f2543Smrg 127706f2543Smrgextern _X_EXPORT void ResetWellKnownSockets(void); 128706f2543Smrg 129706f2543Smrgextern _X_EXPORT void CloseWellKnownConnections(void); 130706f2543Smrg 131706f2543Smrgextern _X_EXPORT XID AuthorizationIDOfClient(ClientPtr /*client*/); 132706f2543Smrg 133706f2543Smrgextern _X_EXPORT char *ClientAuthorized( 134706f2543Smrg ClientPtr /*client*/, 135706f2543Smrg unsigned int /*proto_n*/, 136706f2543Smrg char* /*auth_proto*/, 137706f2543Smrg unsigned int /*string_n*/, 138706f2543Smrg char* /*auth_string*/); 139706f2543Smrg 140706f2543Smrgextern _X_EXPORT Bool EstablishNewConnections( 141706f2543Smrg ClientPtr /*clientUnused*/, 142706f2543Smrg pointer /*closure*/); 143706f2543Smrg 144706f2543Smrgextern _X_EXPORT void CheckConnections(void); 145706f2543Smrg 146706f2543Smrgextern _X_EXPORT void CloseDownConnection(ClientPtr /*client*/); 147706f2543Smrg 148706f2543Smrgextern _X_EXPORT void AddGeneralSocket(int /*fd*/); 149706f2543Smrg 150706f2543Smrgextern _X_EXPORT void RemoveGeneralSocket(int /*fd*/); 151706f2543Smrg 152706f2543Smrgextern _X_EXPORT void AddEnabledDevice(int /*fd*/); 153706f2543Smrg 154706f2543Smrgextern _X_EXPORT void RemoveEnabledDevice(int /*fd*/); 155706f2543Smrg 156706f2543Smrgextern _X_EXPORT int OnlyListenToOneClient(ClientPtr /*client*/); 157706f2543Smrg 158706f2543Smrgextern _X_EXPORT void ListenToAllClients(void); 159706f2543Smrg 160706f2543Smrgextern _X_EXPORT void IgnoreClient(ClientPtr /*client*/); 161706f2543Smrg 162706f2543Smrgextern _X_EXPORT void AttendClient(ClientPtr /*client*/); 163706f2543Smrg 164706f2543Smrgextern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client*/); 165706f2543Smrg 166706f2543Smrgextern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client*/); 167706f2543Smrg 168706f2543Smrg#ifdef XQUARTZ 169706f2543Smrgextern void ListenOnOpenFD(int /* fd */, int /* noxauth */); 170706f2543Smrg#endif 171706f2543Smrg 172706f2543Smrgextern _X_EXPORT CARD32 GetTimeInMillis(void); 173706f2543Smrg 174706f2543Smrgextern _X_EXPORT void AdjustWaitForDelay( 175706f2543Smrg pointer /*waitTime*/, 176706f2543Smrg unsigned long /*newdelay*/); 177706f2543Smrg 178706f2543Smrgtypedef struct _OsTimerRec *OsTimerPtr; 179706f2543Smrg 180706f2543Smrgtypedef CARD32 (*OsTimerCallback)( 181706f2543Smrg OsTimerPtr /* timer */, 182706f2543Smrg CARD32 /* time */, 183706f2543Smrg pointer /* arg */); 184706f2543Smrg 185706f2543Smrgextern _X_EXPORT void TimerInit(void); 186706f2543Smrg 187706f2543Smrgextern _X_EXPORT Bool TimerForce(OsTimerPtr /* timer */); 188706f2543Smrg 189706f2543Smrg#define TimerAbsolute (1<<0) 190706f2543Smrg#define TimerForceOld (1<<1) 191706f2543Smrg 192706f2543Smrgextern _X_EXPORT OsTimerPtr TimerSet( 193706f2543Smrg OsTimerPtr /* timer */, 194706f2543Smrg int /* flags */, 195706f2543Smrg CARD32 /* millis */, 196706f2543Smrg OsTimerCallback /* func */, 197706f2543Smrg pointer /* arg */); 198706f2543Smrg 199706f2543Smrgextern _X_EXPORT void TimerCheck(void); 200706f2543Smrgextern _X_EXPORT void TimerCancel(OsTimerPtr /* pTimer */); 201706f2543Smrgextern _X_EXPORT void TimerFree(OsTimerPtr /* pTimer */); 202706f2543Smrg 203706f2543Smrgextern _X_EXPORT void SetScreenSaverTimer(void); 204706f2543Smrgextern _X_EXPORT void FreeScreenSaverTimer(void); 205706f2543Smrg 206706f2543Smrgextern _X_EXPORT void AutoResetServer(int /*sig*/); 207706f2543Smrg 208706f2543Smrgextern _X_EXPORT void GiveUp(int /*sig*/); 209706f2543Smrg 210706f2543Smrgextern _X_EXPORT void UseMsg(void); 211706f2543Smrg 212706f2543Smrgextern _X_EXPORT void ProcessCommandLine(int /*argc*/, char* /*argv*/[]); 213706f2543Smrg 214706f2543Smrgextern _X_EXPORT int set_font_authorizations( 215706f2543Smrg char ** /* authorizations */, 216706f2543Smrg int * /*authlen */, 217706f2543Smrg pointer /* client */); 218706f2543Smrg 219706f2543Smrg#ifndef _HAVE_XALLOC_DECLS 220706f2543Smrg#define _HAVE_XALLOC_DECLS 221706f2543Smrg 222706f2543Smrg/* 223706f2543Smrg * These causes all sorts of warnings->errors in the xsrc build. 224706f2543Smrg */ 225706f2543Smrg#ifdef __NetBSD__ 226706f2543Smrg#undef _X_DEPRECATED 227706f2543Smrg#define _X_DEPRECATED 228706f2543Smrg#endif 229706f2543Smrg 230706f2543Smrg/* 231706f2543Smrg * Use malloc(3) instead. 232706f2543Smrg */ 233706f2543Smrgextern _X_EXPORT void *Xalloc(unsigned long /*amount*/) _X_DEPRECATED; 234706f2543Smrg/* 235706f2543Smrg * Use calloc(3) instead 236706f2543Smrg */ 237706f2543Smrgextern _X_EXPORT void *Xcalloc(unsigned long /*amount*/) _X_DEPRECATED; 238706f2543Smrg/* 239706f2543Smrg * Use realloc(3) instead 240706f2543Smrg */ 241706f2543Smrgextern _X_EXPORT void *Xrealloc(void * /*ptr*/, unsigned long /*amount*/) 242706f2543Smrg _X_DEPRECATED; 243706f2543Smrg/* 244706f2543Smrg * Use free(3) instead 245706f2543Smrg */ 246706f2543Smrgextern _X_EXPORT void Xfree(void * /*ptr*/) _X_DEPRECATED; 247706f2543Smrg 248706f2543Smrg#endif 249706f2543Smrg 250706f2543Smrg/* 251706f2543Smrg * This function malloc(3)s buffer, terminating the server if there is not 252706f2543Smrg * enough memory. 253706f2543Smrg */ 254706f2543Smrgextern _X_EXPORT void *XNFalloc(unsigned long /*amount*/); 255706f2543Smrg/* 256706f2543Smrg * This function calloc(3)s buffer, terminating the server if there is not 257706f2543Smrg * enough memory. 258706f2543Smrg */ 259706f2543Smrgextern _X_EXPORT void *XNFcalloc(unsigned long /*amount*/); 260706f2543Smrg/* 261706f2543Smrg * This function realloc(3)s passed buffer, terminating the server if there is 262706f2543Smrg * not enough memory. 263706f2543Smrg */ 264706f2543Smrgextern _X_EXPORT void *XNFrealloc(void * /*ptr*/, unsigned long /*amount*/); 265706f2543Smrg 266706f2543Smrg/* 267706f2543Smrg * This function strdup(3)s passed string. The only difference from the library 268706f2543Smrg * function that it is safe to pass NULL, as NULL will be returned. 269706f2543Smrg */ 270706f2543Smrgextern _X_EXPORT char *Xstrdup(const char *s); 271706f2543Smrg 272706f2543Smrg/* 273706f2543Smrg * This function strdup(3)s passed string, terminating the server if there is 274706f2543Smrg * not enough memory. If NULL is passed to this function, NULL is returned. 275706f2543Smrg */ 276706f2543Smrgextern _X_EXPORT char *XNFstrdup(const char *s); 277706f2543Smrg 278706f2543Smrg/* Include new X*asprintf API */ 279706f2543Smrg#include "Xprintf.h" 280706f2543Smrg 281706f2543Smrg/* Older api deprecated in favor of the asprintf versions */ 282706f2543Smrgextern _X_EXPORT char *Xprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED; 283706f2543Smrgextern _X_EXPORT char *Xvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED; 284706f2543Smrgextern _X_EXPORT char *XNFprintf(const char *fmt, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_DEPRECATED; 285706f2543Smrgextern _X_EXPORT char *XNFvprintf(const char *fmt, va_list va)_X_ATTRIBUTE_PRINTF(1,0) _X_DEPRECATED; 286706f2543Smrg 287706f2543Smrgtypedef void (*OsSigHandlerPtr)(int /* sig */); 288706f2543Smrgtypedef int (*OsSigWrapperPtr)(int /* sig */); 289706f2543Smrg 290706f2543Smrgextern _X_EXPORT OsSigHandlerPtr OsSignal(int /* sig */, OsSigHandlerPtr /* handler */); 291706f2543Smrgextern _X_EXPORT OsSigWrapperPtr OsRegisterSigWrapper(OsSigWrapperPtr newWrap); 292706f2543Smrg 293706f2543Smrgextern _X_EXPORT int auditTrailLevel; 294706f2543Smrg 295706f2543Smrgextern _X_EXPORT void LockServer(void); 296706f2543Smrgextern _X_EXPORT void UnlockServer(void); 297706f2543Smrg 298706f2543Smrgextern _X_EXPORT int OsLookupColor( 299706f2543Smrg int /*screen*/, 300706f2543Smrg char * /*name*/, 301706f2543Smrg unsigned /*len*/, 302706f2543Smrg unsigned short * /*pred*/, 303706f2543Smrg unsigned short * /*pgreen*/, 304706f2543Smrg unsigned short * /*pblue*/); 305706f2543Smrg 306706f2543Smrgextern _X_EXPORT void OsInit(void); 307706f2543Smrg 308706f2543Smrgextern _X_EXPORT void OsCleanup(Bool); 309706f2543Smrg 310706f2543Smrgextern _X_EXPORT void OsVendorFatalError(void); 311706f2543Smrg 312706f2543Smrgextern _X_EXPORT void OsVendorInit(void); 313706f2543Smrg 314706f2543Smrgextern _X_EXPORT void OsBlockSignals (void); 315706f2543Smrg 316706f2543Smrgextern _X_EXPORT void OsReleaseSignals (void); 317706f2543Smrg 318706f2543Smrgextern _X_EXPORT void OsAbort (void) _X_NORETURN; 319706f2543Smrg 320706f2543Smrg#if !defined(WIN32) 321706f2543Smrgextern _X_EXPORT int System(char *); 322706f2543Smrgextern _X_EXPORT pointer Popen(char *, char *); 323706f2543Smrgextern _X_EXPORT int Pclose(pointer); 324706f2543Smrgextern _X_EXPORT pointer Fopen(char *, char *); 325706f2543Smrgextern _X_EXPORT int Fclose(pointer); 326706f2543Smrg#else 327706f2543Smrg#define System(a) system(a) 328706f2543Smrg#define Popen(a,b) popen(a,b) 329706f2543Smrg#define Pclose(a) pclose(a) 330706f2543Smrg#define Fopen(a,b) fopen(a,b) 331706f2543Smrg#define Fclose(a) fclose(a) 332706f2543Smrg#endif 333706f2543Smrg 334706f2543Smrgextern _X_EXPORT void CheckUserParameters(int argc, char **argv, char **envp); 335706f2543Smrgextern _X_EXPORT void CheckUserAuthorization(void); 336706f2543Smrg 337706f2543Smrgextern _X_EXPORT int AddHost( 338706f2543Smrg ClientPtr /*client*/, 339706f2543Smrg int /*family*/, 340706f2543Smrg unsigned /*length*/, 341706f2543Smrg const void */*pAddr*/); 342706f2543Smrg 343706f2543Smrgextern _X_EXPORT Bool ForEachHostInFamily ( 344706f2543Smrg int /*family*/, 345706f2543Smrg Bool (* /*func*/ )( 346706f2543Smrg unsigned char * /* addr */, 347706f2543Smrg short /* len */, 348706f2543Smrg pointer /* closure */), 349706f2543Smrg pointer /*closure*/); 350706f2543Smrg 351706f2543Smrgextern _X_EXPORT int RemoveHost( 352706f2543Smrg ClientPtr /*client*/, 353706f2543Smrg int /*family*/, 354706f2543Smrg unsigned /*length*/, 355706f2543Smrg pointer /*pAddr*/); 356706f2543Smrg 357706f2543Smrgextern _X_EXPORT int GetHosts( 358706f2543Smrg pointer * /*data*/, 359706f2543Smrg int * /*pnHosts*/, 360706f2543Smrg int * /*pLen*/, 361706f2543Smrg BOOL * /*pEnabled*/); 362706f2543Smrg 363706f2543Smrgtypedef struct sockaddr * sockaddrPtr; 364706f2543Smrg 365706f2543Smrgextern _X_EXPORT int InvalidHost(sockaddrPtr /*saddr*/, int /*len*/, ClientPtr client); 366706f2543Smrg 367706f2543Smrgextern _X_EXPORT int LocalClient(ClientPtr /* client */); 368706f2543Smrg 369706f2543Smrgextern _X_EXPORT int LocalClientCred(ClientPtr, int *, int *); 370706f2543Smrg 371706f2543Smrg#define LCC_UID_SET (1 << 0) 372706f2543Smrg#define LCC_GID_SET (1 << 1) 373706f2543Smrg#define LCC_PID_SET (1 << 2) 374706f2543Smrg#define LCC_ZID_SET (1 << 3) 375706f2543Smrg 376706f2543Smrgtypedef struct { 377706f2543Smrg int fieldsSet; /* Bit mask of fields set */ 378706f2543Smrg int euid; /* Effective uid */ 379706f2543Smrg int egid; /* Primary effective group id */ 380706f2543Smrg int nSuppGids; /* Number of supplementary group ids */ 381706f2543Smrg int *pSuppGids; /* Array of supplementary group ids */ 382706f2543Smrg int pid; /* Process id */ 383706f2543Smrg int zoneid; /* Only set on Solaris 10 & later */ 384706f2543Smrg} LocalClientCredRec; 385706f2543Smrg 386706f2543Smrgextern _X_EXPORT int GetLocalClientCreds(ClientPtr, LocalClientCredRec **); 387706f2543Smrgextern _X_EXPORT void FreeLocalClientCreds(LocalClientCredRec *); 388706f2543Smrg 389706f2543Smrgextern _X_EXPORT int ChangeAccessControl(ClientPtr /*client*/, int /*fEnabled*/); 390706f2543Smrg 391706f2543Smrgextern _X_EXPORT int GetAccessControl(void); 392706f2543Smrg 393706f2543Smrg 394706f2543Smrgextern _X_EXPORT void AddLocalHosts(void); 395706f2543Smrg 396706f2543Smrgextern _X_EXPORT void ResetHosts(char *display); 397706f2543Smrg 398706f2543Smrgextern _X_EXPORT void EnableLocalHost(void); 399706f2543Smrg 400706f2543Smrgextern _X_EXPORT void DisableLocalHost(void); 401706f2543Smrg 402706f2543Smrgextern _X_EXPORT void AccessUsingXdmcp(void); 403706f2543Smrg 404706f2543Smrgextern _X_EXPORT void DefineSelf(int /*fd*/); 405706f2543Smrg 406706f2543Smrg#if XDMCP 407706f2543Smrgextern _X_EXPORT void AugmentSelf(pointer /*from*/, int /*len*/); 408706f2543Smrg 409706f2543Smrgextern _X_EXPORT void RegisterAuthorizations(void); 410706f2543Smrg#endif 411706f2543Smrg 412706f2543Smrgextern _X_EXPORT void InitAuthorization(char * /*filename*/); 413706f2543Smrg 414706f2543Smrg/* extern int LoadAuthorization(void); */ 415706f2543Smrg 416706f2543Smrgextern _X_EXPORT int AuthorizationFromID ( 417706f2543Smrg XID id, 418706f2543Smrg unsigned short *name_lenp, 419706f2543Smrg char **namep, 420706f2543Smrg unsigned short *data_lenp, 421706f2543Smrg char **datap); 422706f2543Smrg 423706f2543Smrgextern _X_EXPORT XID CheckAuthorization( 424706f2543Smrg unsigned int /*namelength*/, 425706f2543Smrg const char * /*name*/, 426706f2543Smrg unsigned int /*datalength*/, 427706f2543Smrg const char * /*data*/, 428706f2543Smrg ClientPtr /*client*/, 429706f2543Smrg char ** /*reason*/ 430706f2543Smrg); 431706f2543Smrg 432706f2543Smrgextern _X_EXPORT void ResetAuthorization(void); 433706f2543Smrg 434706f2543Smrgextern _X_EXPORT int RemoveAuthorization ( 435706f2543Smrg unsigned short name_length, 436706f2543Smrg const char *name, 437706f2543Smrg unsigned short data_length, 438706f2543Smrg const char *data); 439706f2543Smrg 440706f2543Smrgextern _X_EXPORT int AddAuthorization( 441706f2543Smrg unsigned int /*name_length*/, 442706f2543Smrg const char * /*name*/, 443706f2543Smrg unsigned int /*data_length*/, 444706f2543Smrg char * /*data*/); 445706f2543Smrg 446706f2543Smrg#ifdef XCSECURITY 447706f2543Smrgextern _X_EXPORT XID GenerateAuthorization( 448706f2543Smrg unsigned int /* name_length */, 449706f2543Smrg const char * /* name */, 450706f2543Smrg unsigned int /* data_length */, 451706f2543Smrg const char * /* data */, 452706f2543Smrg unsigned int * /* data_length_return */, 453706f2543Smrg char ** /* data_return */); 454706f2543Smrg#endif 455706f2543Smrg 456706f2543Smrgextern _X_EXPORT int ddxProcessArgument(int /*argc*/, char * /*argv*/ [], int /*i*/); 457706f2543Smrg 458706f2543Smrgextern _X_EXPORT void ddxUseMsg(void); 459706f2543Smrg 460706f2543Smrg/* stuff for ReplyCallback */ 461706f2543Smrgextern _X_EXPORT CallbackListPtr ReplyCallback; 462706f2543Smrgtypedef struct { 463706f2543Smrg ClientPtr client; 464706f2543Smrg const void *replyData; 465706f2543Smrg unsigned long dataLenBytes; 466706f2543Smrg unsigned long bytesRemaining; 467706f2543Smrg Bool startOfReply; 468706f2543Smrg} ReplyInfoRec; 469706f2543Smrg 470706f2543Smrg/* stuff for FlushCallback */ 471706f2543Smrgextern _X_EXPORT CallbackListPtr FlushCallback; 472706f2543Smrg 473706f2543Smrgextern _X_EXPORT void AbortDDX(void); 474706f2543Smrgextern _X_EXPORT void ddxGiveUp(void); 475706f2543Smrgextern _X_EXPORT int TimeSinceLastInputEvent(void); 476706f2543Smrg 477706f2543Smrg/* strcasecmp.c */ 478706f2543Smrg#if NEED_STRCASECMP 479706f2543Smrg#define strcasecmp xstrcasecmp 480706f2543Smrgextern _X_EXPORT int xstrcasecmp(const char *s1, const char *s2); 481706f2543Smrg#endif 482706f2543Smrg 483706f2543Smrg#if NEED_STRNCASECMP 484706f2543Smrg#define strncasecmp xstrncasecmp 485706f2543Smrgextern _X_EXPORT int xstrncasecmp(const char *s1, const char *s2, size_t n); 486706f2543Smrg#endif 487706f2543Smrg 488706f2543Smrg#if NEED_STRCASESTR 489706f2543Smrg#define strcasestr xstrcasestr 490706f2543Smrgextern _X_EXPORT char *xstrcasestr(const char *s, const char *find); 491706f2543Smrg#endif 492706f2543Smrg 493706f2543Smrg#ifndef HAS_STRLCPY 494706f2543Smrgextern _X_EXPORT size_t strlcpy(char *dst, const char *src, size_t siz); 495706f2543Smrgextern _X_EXPORT size_t strlcat(char *dst, const char *src, size_t siz); 496706f2543Smrg#endif 497706f2543Smrg 498030cabe0Smrg#ifndef HAVE_TIMINGSAFE_MEMCMP 499030cabe0Smrgextern _X_EXPORT int 500030cabe0Smrgtimingsafe_memcmp(const void *b1, const void *b2, size_t len); 501030cabe0Smrg#endif 502030cabe0Smrg 503706f2543Smrg/* Logging. */ 504706f2543Smrgtypedef enum _LogParameter { 505706f2543Smrg XLOG_FLUSH, 506706f2543Smrg XLOG_SYNC, 507706f2543Smrg XLOG_VERBOSITY, 508706f2543Smrg XLOG_FILE_VERBOSITY 509706f2543Smrg} LogParameter; 510706f2543Smrg 511706f2543Smrg/* Flags for log messages. */ 512706f2543Smrgtypedef enum { 513706f2543Smrg X_PROBED, /* Value was probed */ 514706f2543Smrg X_CONFIG, /* Value was given in the config file */ 515706f2543Smrg X_DEFAULT, /* Value is a default */ 516706f2543Smrg X_CMDLINE, /* Value was given on the command line */ 517706f2543Smrg X_NOTICE, /* Notice */ 518706f2543Smrg X_ERROR, /* Error message */ 519706f2543Smrg X_WARNING, /* Warning message */ 520706f2543Smrg X_INFO, /* Informational message */ 521706f2543Smrg X_NONE, /* No prefix */ 522706f2543Smrg X_NOT_IMPLEMENTED, /* Not implemented */ 523706f2543Smrg X_UNKNOWN = -1 /* unknown -- this must always be last */ 524706f2543Smrg} MessageType; 525706f2543Smrg 526706f2543Smrgextern _X_EXPORT const char *LogInit(const char *fname, const char *backup); 527706f2543Smrgextern _X_EXPORT void LogClose(void); 528706f2543Smrgextern _X_EXPORT Bool LogSetParameter(LogParameter param, int value); 529706f2543Smrgextern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args); 530706f2543Smrgextern _X_EXPORT void LogWrite(int verb, const char *f, ...) _X_ATTRIBUTE_PRINTF(2,3); 531706f2543Smrgextern _X_EXPORT void LogVMessageVerb(MessageType type, int verb, const char *format, 532706f2543Smrg va_list args); 533706f2543Smrgextern _X_EXPORT void LogMessageVerb(MessageType type, int verb, const char *format, 534706f2543Smrg ...) _X_ATTRIBUTE_PRINTF(3,4); 535706f2543Smrgextern _X_EXPORT void LogMessage(MessageType type, const char *format, ...) 536706f2543Smrg _X_ATTRIBUTE_PRINTF(2,3); 537706f2543Smrgextern _X_EXPORT void FreeAuditTimer(void); 538706f2543Smrgextern _X_EXPORT void AuditF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2); 539706f2543Smrgextern _X_EXPORT void VAuditF(const char *f, va_list args); 540706f2543Smrgextern _X_EXPORT void FatalError(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_NORETURN; 541706f2543Smrg 542706f2543Smrg#ifdef DEBUG 543706f2543Smrg#define DebugF ErrorF 544706f2543Smrg#else 545706f2543Smrg#define DebugF(...) /* */ 546706f2543Smrg#endif 547706f2543Smrg 548706f2543Smrgextern _X_EXPORT void VErrorF(const char *f, va_list args); 549706f2543Smrgextern _X_EXPORT void ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2); 550706f2543Smrgextern _X_EXPORT void Error(const char *str); 551706f2543Smrgextern _X_EXPORT void LogPrintMarkers(void); 552706f2543Smrg 553706f2543Smrgextern _X_EXPORT void xorg_backtrace(void); 554706f2543Smrg 555706f2543Smrg#endif /* OS_H */ 556