b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/***********************************************************
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCopyright 1987, 1998 The Open Group
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.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncThe above copyright notice and this permission notice shall be included in
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncall copies or substantial portions of the Software.
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.
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.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync All Rights Reserved
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.
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
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync******************************************************************/
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#define xcalloc(_num, _size) Xcalloc((unsigned long)(_num)*(unsigned long)(_size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define xrealloc(ptr, size) Xrealloc((pointer)(ptr), (unsigned long)(size))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void ddxBeforeReset (void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void (*OsVendorVErrorFProc)(const char *, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int* /*pClientsReady*/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ReadRequestFromClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*data*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*count*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ResetCurrentRequest(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FlushIfCriticalOutputPending(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void SetCriticalOutputPending(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int WriteToClient(ClientPtr /*who*/, int /*count*/, const void* /*buf*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CloseWellKnownConnections(void);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT XID AuthorizationIDOfClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*proto_n*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*auth_proto*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*string_n*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char* /*auth_string*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CloseDownConnection(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void RemoveGeneralSocket(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void RemoveEnabledDevice(int /*fd*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int OnlyListenToOneClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void IgnoreClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AttendClient(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void MakeClientGrabImpervious(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void MakeClientGrabPervious(ClientPtr /*client*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void ListenOnOpenFD(int /* fd */, int /* noxauth */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned long /*newdelay*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool TimerForce(OsTimerPtr /* timer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* flags */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerCancel(OsTimerPtr /* pTimer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void TimerFree(OsTimerPtr /* pTimer */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ProcessCommandLine(int /*argc*/, char* /*argv*/[]);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char ** /* authorizations */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*authlen */,
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 pointer XNFalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer XNFcalloc(unsigned long /*amount*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT pointer XNFrealloc(pointer /*ptr*/, unsigned long /*amount*/);
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);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT OsSigHandlerPtr OsSignal(int /* sig */, OsSigHandlerPtr /* handler */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT OsSigWrapperPtr OsRegisterSigWrapper(OsSigWrapperPtr newWrap);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*screen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*len*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pred*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pgreen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short * /*pblue*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if !defined(WIN32)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void CheckUserParameters(int argc, char **argv, char **envp);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char * /* addr */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short /* len */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /*family*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned /*length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*pnHosts*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int * /*pLen*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int InvalidHost(sockaddrPtr /*saddr*/, int /*len*/, ClientPtr client);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int LocalClient(ClientPtr /* client */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int LocalClientCred(ClientPtr, int *, int *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int nSuppGids; /* Number of supplementary group ids */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *pSuppGids; /* Array of supplementary group ids */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int GetLocalClientCreds(ClientPtr, LocalClientCredRec **);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void FreeLocalClientCreds(LocalClientCredRec *);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ChangeAccessControl(ClientPtr /*client*/, int /*fEnabled*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void AugmentSelf(pointer /*from*/, int /*len*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void InitAuthorization(char * /*filename*/);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* extern int LoadAuthorization(void); */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short *name_lenp,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short *data_lenp,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*namelength*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*datalength*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*data*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char ** /*reason*/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short name_length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short data_length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*name_length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*name*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /*data_length*/,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /*data*/);
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 */);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int ddxProcessArgument(int /*argc*/, char * /*argv*/ [], int /*i*/);
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 (_client->swapped ? lswaps(_pxReq->length) : _pxReq->length) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync lswapl(((CARD32*)_pxReq)[1]) : ((CARD32*)_pxReq)[1])-1) \
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/* stuff for ReplyCallback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* stuff for FlushCallback */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int xstrcasecmp(const char *s1, const char *s2);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int xstrncasecmp(const char *s1, const char *s2, size_t n);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT char *xstrcasestr(const char *s, const char *find);
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/* Logging. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* Flags for log messages. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef enum {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_CMDLINE, /* Value was given on the command line */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync X_UNKNOWN = -1 /* unknown -- this must always be last */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* XXX Need to check which GCC versions have the format(printf) attribute. */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _printf_attribute(a,b) __attribute((format(__printf__,a,b)))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT const char *LogInit(const char *fname, const char *backup);
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,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogMessageVerb(MessageType type, int verb, const char *format,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void LogMessage(MessageType type, const char *format, ...)
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)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void VErrorF(const char *f, va_list args);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void ErrorF(const char *f, ...) _printf_attribute(1,2);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* OS_H */