195 lines
5.5 KiB
C
195 lines
5.5 KiB
C
/*
|
|
|
|
Copyright 1987, 1998 The Open Group
|
|
|
|
Permission to use, copy, modify, distribute, and sell this software and its
|
|
documentation for any purpose is hereby granted without fee, provided that
|
|
the above copyright notice appear in all copies and that both that
|
|
copyright notice and this permission notice appear in supporting
|
|
documentation.
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
in all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
Except as contained in this notice, the name of The Open Group shall
|
|
not be used in advertising or otherwise to promote the sale, use or
|
|
other dealings in this Software without prior written authorization
|
|
from The Open Group.
|
|
|
|
|
|
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
|
|
Copyright 1994 Quarterdeck Office Systems.
|
|
|
|
All Rights Reserved
|
|
|
|
Permission to use, copy, modify, and distribute this software and its
|
|
documentation for any purpose and without fee is hereby granted,
|
|
provided that the above copyright notice appear in all copies and that
|
|
both that copyright notice and this permission notice appear in
|
|
supporting documentation, and that the names of Digital and
|
|
Quarterdeck not be used in advertising or publicity pertaining to
|
|
distribution of the software without specific, written prior
|
|
permission.
|
|
|
|
DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
|
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
|
|
OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
|
|
OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
* OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* Except as contained in this notice, the name of the copyright holder(s)
|
|
* and author(s) shall not be used in advertising or otherwise to promote
|
|
* the sale, use or other dealings in this Software without prior written
|
|
* authorization from the copyright holder(s) and author(s).
|
|
*/
|
|
|
|
|
|
#ifdef HAVE_DIX_CONFIG_H
|
|
#include <dix-config.h>
|
|
#endif
|
|
|
|
#include <X11/Xos.h>
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
#include <sys/stat.h>
|
|
#include <stdarg.h>
|
|
#include <stdlib.h> /* for malloc() */
|
|
#include <errno.h>
|
|
|
|
#include "site.h"
|
|
#include "opaque.h"
|
|
|
|
#ifdef __GNUC__
|
|
static void AbortServer(void) __attribute__((noreturn));
|
|
#endif
|
|
|
|
static void
|
|
AbortServer(void)
|
|
{
|
|
OsCleanup(TRUE);
|
|
AbortDDX();
|
|
fflush(stderr);
|
|
if (CoreDump)
|
|
abort();
|
|
exit (1);
|
|
}
|
|
|
|
#ifndef AUDIT_PREFIX
|
|
#define AUDIT_PREFIX "AUDIT: %s: %ld: "
|
|
#endif
|
|
|
|
static char *
|
|
AuditPrefix(void)
|
|
{
|
|
time_t tm;
|
|
char *autime, *s;
|
|
char *tmpBuf;
|
|
int len;
|
|
|
|
time(&tm);
|
|
autime = ctime(&tm);
|
|
if ((s = strchr(autime, '\n')))
|
|
*s = '\0';
|
|
len = strlen(AUDIT_PREFIX) + strlen(autime) + 10 + 1;
|
|
tmpBuf = malloc(len);
|
|
if (!tmpBuf)
|
|
return NULL;
|
|
snprintf(tmpBuf, len, AUDIT_PREFIX, autime, (unsigned long)getpid());
|
|
return tmpBuf;
|
|
}
|
|
|
|
void
|
|
AuditF(const char * f, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, f);
|
|
|
|
VAuditF(f, args);
|
|
va_end(args);
|
|
}
|
|
|
|
void
|
|
VAuditF(const char *f, va_list args)
|
|
{
|
|
char *prefix;
|
|
char buf[1024];
|
|
|
|
prefix = AuditPrefix();
|
|
vsnprintf(buf, sizeof(buf), f, args);
|
|
|
|
/* XXX Compressing duplicated messages is temporarily disabled to
|
|
* work around bugzilla 964:
|
|
* https://freedesktop.org/bugzilla/show_bug.cgi?id=964
|
|
*/
|
|
ErrorF("%s%s", prefix != NULL ? prefix : "", buf);
|
|
|
|
if (prefix != NULL)
|
|
free(prefix);
|
|
}
|
|
|
|
_X_EXPORT void
|
|
FatalError(const char *f, ...)
|
|
{
|
|
va_list args;
|
|
|
|
ErrorF("\nFatal server error:\n");
|
|
|
|
va_start(args, f);
|
|
VErrorF(f, args);
|
|
va_end(args);
|
|
ErrorF("\n");
|
|
|
|
AbortServer();
|
|
/*NOTREACHED*/
|
|
}
|
|
|
|
_X_EXPORT void
|
|
VErrorF(const char *f, va_list args)
|
|
{
|
|
vfprintf(stderr, f, args);
|
|
}
|
|
|
|
_X_EXPORT void
|
|
ErrorF(const char * f, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, f);
|
|
VErrorF(f, args);
|
|
va_end(args);
|
|
}
|