diff --git a/Xext/shm.c b/Xext/shm.c index f14b88815..f13bb1516 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -46,6 +46,7 @@ in this Software without prior written authorization from The Open Group. #include "miext/extinit_priv.h" #include "os/auth.h" #include "os/busfault.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "misc.h" diff --git a/Xext/vidmode.c b/Xext/vidmode.c index 4468aebda..282f73d53 100644 --- a/Xext/vidmode.c +++ b/Xext/vidmode.c @@ -36,6 +36,9 @@ from Kaleb S. KEITHLEY #include #include #include + +#include "os/log_priv.h" + #include "misc.h" #include "dixstruct.h" #include "extnsionst.h" diff --git a/Xi/exevents.c b/Xi/exevents.c index 3604fd329..bdca5a933 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -95,6 +95,7 @@ SOFTWARE. #include "dix/eventconvert.h" #include "dix/exevents_priv.h" #include "dix/input_priv.h" +#include "os/log_priv.h" #include "inputstr.h" #include "windowstr.h" diff --git a/config/dbus-core.c b/config/dbus-core.c index 30495f07b..321bee222 100644 --- a/config/dbus-core.c +++ b/config/dbus-core.c @@ -28,6 +28,8 @@ #include #include +#include "os/log_priv.h" + #include "dix.h" #include "os.h" diff --git a/dix/devices.c b/dix/devices.c index f2ff8e3cb..96712b4fd 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -60,6 +60,7 @@ SOFTWARE. #include "dix/exevents_priv.h" #include "dix/input_priv.h" #include "dix/ptrveloc_priv.h" +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "misc.h" diff --git a/dix/dixfonts.c b/dix/dixfonts.c index c93077970..f186d22fa 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -60,6 +60,7 @@ Equipment Corporation. #include "dix/dix_priv.h" #include "dix/gc_priv.h" #include "os/auth.h" +#include "os/log_priv.h" #include "scrnintstr.h" #include "resource.h" diff --git a/dix/events.c b/dix/events.c index b285e35b7..3f3ede2e6 100644 --- a/dix/events.c +++ b/dix/events.c @@ -125,6 +125,7 @@ Equipment Corporation. #include "dix/eventconvert.h" #include "dix/exevents_priv.h" #include "dix/input_priv.h" +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "misc.h" diff --git a/dix/touch.c b/dix/touch.c index d7d6f2ec7..bdfb3f3df 100644 --- a/dix/touch.c +++ b/dix/touch.c @@ -31,6 +31,7 @@ #include "dix/eventconvert.h" #include "dix/exevents_priv.h" #include "dix/input_priv.h" +#include "os/log_priv.h" #include "inputstr.h" #include "scrnintstr.h" diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c index 9306f3367..881bc2ea9 100644 --- a/hw/kdrive/ephyr/ephyrinit.c +++ b/hw/kdrive/ephyr/ephyrinit.c @@ -28,6 +28,7 @@ #include "dix/dix_priv.h" #include "os/cmdline.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "ephyr.h" diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index aa5b15d82..3f5778d37 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -50,6 +50,7 @@ #include #include +#include "os/log_priv.h" #include "os/osdep.h" #include "xf86.h" diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index 703eed0b5..2be494394 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -59,17 +59,17 @@ #include #include #include +#include #include "dix/input_priv.h" - #include "dix/dix_priv.h" +#include "os/log_priv.h" #include "misc.h" #include "xf86.h" #include "xf86Priv.h" #include "xf86_os_support.h" #include "xf86_OSlib.h" -#include #ifdef XFreeXDGA #include "dgaproc.h" diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 7572be488..f077308e1 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -43,6 +43,7 @@ #include "dix/dix_priv.h" #include "dix/input_priv.h" +#include "os/log_priv.h" #include "mi.h" #include "os.h" diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 30ec80ca0..f28f0f3f4 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -57,6 +57,7 @@ #include "dix/screenint_priv.h" #include "os/cmdline.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "servermd.h" diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c index ae007ccd7..31e2a37af 100644 --- a/hw/xfree86/common/xf86Mode.c +++ b/hw/xfree86/common/xf86Mode.c @@ -85,6 +85,9 @@ #endif #include + +#include "os/log_priv.h" + #include "xf86Modes.h" #include "xf86Crtc.h" #include "os.h" diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c index 0a5ada44e..f8a2fc0d8 100644 --- a/hw/xfree86/common/xf86VidMode.c +++ b/hw/xfree86/common/xf86VidMode.c @@ -39,6 +39,9 @@ #endif #include + +#include "os/log_priv.h" + #include "os.h" #include "xf86.h" #include "xf86Priv.h" diff --git a/hw/xfree86/common/xf86fbman.c b/hw/xfree86/common/xf86fbman.c index 25779e510..cc288f5bc 100644 --- a/hw/xfree86/common/xf86fbman.c +++ b/hw/xfree86/common/xf86fbman.c @@ -30,18 +30,17 @@ #include #endif +#include + +#include "os/log_priv.h" + #include "misc.h" #include "xf86.h" -#include #include "scrnintstr.h" #include "regionstr.h" #include "xf86fbman.h" -/* -#define DEBUG -*/ - static DevPrivateKeyRec xf86FBManagerKeyRec; static DevPrivateKey xf86FBManagerKey; diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c index 35fb8b0a9..952810bac 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -35,8 +35,11 @@ #include #include #include -#include #include +#include + +#include "os/log_priv.h" + #include "os.h" #include "Pci.h" #include "xf86.h" diff --git a/hw/xfree86/int10/vbeModes.c b/hw/xfree86/int10/vbeModes.c index 7c5d882fc..abafb1d8b 100644 --- a/hw/xfree86/int10/vbeModes.c +++ b/hw/xfree86/int10/vbeModes.c @@ -36,6 +36,8 @@ #include #include +#include "os/log_priv.h" + #include "xf86.h" #include "vbe.h" #include "vbeModes.h" diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c index 2da3c5250..aaf6bb5c9 100644 --- a/hw/xfree86/os-support/linux/lnx_acpi.c +++ b/hw/xfree86/os-support/linux/lnx_acpi.c @@ -10,6 +10,8 @@ #include #include +#include "os/log_priv.h" + #include "os.h" #include "xf86.h" #include "xf86Priv.h" diff --git a/hw/xfree86/os-support/linux/lnx_apm.c b/hw/xfree86/os-support/linux/lnx_apm.c index a06d49fbe..5993d620e 100644 --- a/hw/xfree86/os-support/linux/lnx_apm.c +++ b/hw/xfree86/os-support/linux/lnx_apm.c @@ -4,6 +4,9 @@ #endif #include + +#include "os/log_priv.h" + #include "os.h" #include "xf86.h" #include "xf86Priv.h" diff --git a/hw/xfree86/os-support/shared/posix_tty.c b/hw/xfree86/os-support/shared/posix_tty.c index 028b16b97..8721f6216 100644 --- a/hw/xfree86/os-support/shared/posix_tty.c +++ b/hw/xfree86/os-support/shared/posix_tty.c @@ -59,6 +59,7 @@ #include #include +#include "os/log_priv.h" #include "os/xserver_poll.h" #include "xf86.h" diff --git a/hw/xfree86/vgahw/vgaHW.c b/hw/xfree86/vgahw/vgaHW.c index 663f96ea3..d65f29b56 100644 --- a/hw/xfree86/vgahw/vgaHW.c +++ b/hw/xfree86/vgahw/vgaHW.c @@ -16,6 +16,9 @@ #include #include + +#include "os/log_priv.h" + #include "misc.h" #include "xf86.h" diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index caadd8944..9d7a4db59 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -36,6 +36,7 @@ #include "miext/extinit_priv.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "os.h" diff --git a/hw/xwayland/xwayland-dmabuf.c b/hw/xwayland/xwayland-dmabuf.c index 1676a82da..d0ecd995a 100644 --- a/hw/xwayland/xwayland-dmabuf.c +++ b/hw/xwayland/xwayland-dmabuf.c @@ -30,6 +30,8 @@ #include #include +#include "os/log_priv.h" + #include "xwayland-dmabuf.h" #include "xwayland-glamor-gbm.h" #include "xwayland-screen.h" diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index 7300af48a..2052fa957 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -32,6 +32,7 @@ #include "dix/dix_priv.h" #include "dix/input_priv.h" #include "randr/randrstr_priv.h" +#include "os/log_priv.h" #include "xwayland-cvt.h" #include "xwayland-output.h" diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c index 9f66c9939..26b3803b4 100644 --- a/hw/xwayland/xwayland-screen.c +++ b/hw/xwayland/xwayland-screen.c @@ -40,6 +40,7 @@ #include "dix/input_priv.h" #include "dix/property_priv.h" #include "miext/extinit_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "os/xserver_poll.h" diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c index b717fcf3c..c4363248c 100644 --- a/hw/xwayland/xwayland-window.c +++ b/hw/xwayland/xwayland-window.c @@ -34,6 +34,7 @@ #include "dix/dix_priv.h" #include "dix/property_priv.h" +#include "os/log_priv.h" #include "compositeext.h" #include "compint.h" diff --git a/hw/xwayland/xwayland-xtest.c b/hw/xwayland/xwayland-xtest.c index 0bb65399b..25832eeee 100644 --- a/hw/xwayland/xwayland-xtest.c +++ b/hw/xwayland/xwayland-xtest.c @@ -33,6 +33,7 @@ #include "dix/dix_priv.h" #include "dix/input_priv.h" #include "os/client_priv.h" +#include "os/log_priv.h" #include #include diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 427ccf3f1..3814554fa 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -41,6 +41,7 @@ #include "os/auth.h" #include "os/cmdline.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "os/xserver_poll.h" diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c index 76bfc8a56..94ec9b6e9 100644 --- a/hw/xwin/InitOutput.c +++ b/hw/xwin/InitOutput.c @@ -38,6 +38,7 @@ from The Open Group. #include "dix/screenint_priv.h" #include "miext/extinit_priv.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "winmsg.h" diff --git a/hw/xwin/winerror.c b/hw/xwin/winerror.c index bdf03f053..174c76f5d 100644 --- a/hw/xwin/winerror.c +++ b/hw/xwin/winerror.c @@ -32,6 +32,7 @@ #include #endif +#include "os/log_priv.h" #include "os/osdep.h" #include <../xfree86/common/xorgVersion.h> diff --git a/include/os.h b/include/os.h index 79557b6cc..0a7fab322 100644 --- a/include/os.h +++ b/include/os.h @@ -320,13 +320,6 @@ extern _X_EXPORT int timingsafe_memcmp(const void *b1, const void *b2, size_t len); #endif -/* Logging. */ -typedef enum _LogParameter { - XLOG_SYNC, - XLOG_VERBOSITY, - XLOG_FILE_VERBOSITY -} LogParameter; - /* Flags for log messages. */ typedef enum { X_PROBED, /* Value was probed */ @@ -343,14 +336,6 @@ typedef enum { X_UNKNOWN = -1 /* unknown -- this must always be last */ } MessageType; -extern _X_EXPORT const char * -LogInit(const char *fname, const char *backup); -extern void -LogSetDisplay(void); -extern _X_EXPORT void -LogClose(enum ExitCode error); -extern _X_EXPORT Bool -LogSetParameter(LogParameter param, int value); extern _X_EXPORT void LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) _X_ATTRIBUTE_PRINTF(3, 0); @@ -367,7 +352,7 @@ extern _X_EXPORT void LogVMessageVerbSigSafe(MessageType type, int verb, const char *format, va_list args) _X_ATTRIBUTE_PRINTF(3, 0); -extern _X_EXPORT void +void LogVHdrMessageVerb(MessageType type, int verb, const char *msg_format, va_list msg_args, const char *hdr_format, va_list hdr_args) @@ -385,12 +370,6 @@ 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) _X_ATTRIBUTE_PRINTF(1, 0); @@ -403,7 +382,7 @@ _X_ATTRIBUTE_PRINTF(1, 0); extern _X_EXPORT void ErrorFSigSafe(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2); -extern _X_EXPORT void +void LogPrintMarkers(void); extern _X_EXPORT void diff --git a/os/client.c b/os/client.c index bcbaee677..7fcf27729 100644 --- a/os/client.c +++ b/os/client.c @@ -87,6 +87,7 @@ #endif #include "os/auth.h" +#include "os/log_priv.h" /** * Try to determine a PID for a client from its connection diff --git a/os/connection.c b/os/connection.c index 0b81106a5..3691e6b12 100644 --- a/os/connection.c +++ b/os/connection.c @@ -97,6 +97,7 @@ SOFTWARE. #include "dix/dix_priv.h" #include "os/audit.h" #include "os/auth.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "misc.h" /* for typedef of pointer */ diff --git a/os/inputthread.c b/os/inputthread.c index 8313e8ab3..4361d8977 100644 --- a/os/inputthread.c +++ b/os/inputthread.c @@ -36,6 +36,7 @@ #include "os/ddx_priv.h" #include "dix/input_priv.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "inputstr.h" #include "opaque.h" diff --git a/os/log.c b/os/log.c index 514553bdc..09e3c4226 100644 --- a/os/log.c +++ b/os/log.c @@ -93,6 +93,7 @@ OR PERFORMANCE OF THIS SOFTWARE. #include "os/audit.h" #include "os/ddx_priv.h" #include "os/fmt.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "opaque.h" @@ -310,7 +311,7 @@ LogClose(enum ExitCode error) } } -Bool +int LogSetParameter(LogParameter param, int value) { switch (param) { diff --git a/os/log_priv.h b/os/log_priv.h new file mode 100644 index 000000000..682aa4e25 --- /dev/null +++ b/os/log_priv.h @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: MIT OR X11 + * + * Copyright © 2024 Enrico Weigelt, metux IT consult + */ +#ifndef __XORG_OS_LOGGING_H +#define __XORG_OS_LOGGING_H + +#include "include/os.h" + +/** + * @brief initialize logging and open log files + * + * Make backup of existing log file, create a new one and open it for logging. + * + * - May be called with NULL or "", if no logging is desired. + * + * - Must always be called, otherwise log messages will fill up the buffer and + * let it grow infinitely. + * + * - if "%s" is present in fname, it will be replaced with the display string or pid + * + * @param fname log file name template. if NULL, dont write any log. + * @param backup name for the old logfile. + * @return new log file name + */ +const char* LogInit(const char *fname, const char *backup); + +/** + * @brief rename the current log file according display name + * + * Renames the current log file with per display prefix (e.g. "Xorg.log.0") + * + */ +void LogSetDisplay(void); + +/** + * @brief log exit code, then flush and close log file and write + * + * Logs the exit code (and success/error state), then flush and close log file. + */ +void LogClose(enum ExitCode error); + +/* @brief parameters for LogSetParameter() */ +typedef enum { + XLOG_SYNC, /* enable/disable fsync() after each log file write */ + XLOG_VERBOSITY, /* set console log verbosity */ + XLOG_FILE_VERBOSITY, /* set log file verbosity */ +} LogParameter; + +/** + * @brief set log file paremeters + * + * Set various (int) logging parameters, eg. verbosity. + * See XLOG_* defines + * + * @param ID of the parameter to set + * @param value the new value + * @result TRUE if successful + */ +int LogSetParameter(LogParameter param, int value); + +#ifdef DEBUG +/** + * @brief log debug messages (like errors) if symbol DEBUG is defined + */ +#define DebugF ErrorF +#else +#define DebugF(...) /* */ +#endif + +#endif /* __XORG_OS_LOGGING_H */ diff --git a/os/osinit.c b/os/osinit.c index 8662da5f3..fdf28820f 100644 --- a/os/osinit.c +++ b/os/osinit.c @@ -60,6 +60,7 @@ SOFTWARE. #include "dix/dix_priv.h" #include "os/busfault.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "os/serverlock.h" diff --git a/os/utils.c b/os/utils.c index 777ba0190..52c30f56f 100644 --- a/os/utils.c +++ b/os/utils.c @@ -67,8 +67,6 @@ OR PERFORMANCE OF THIS SOFTWARE. #define TRANS_REOPEN #include -#include "os/audit.h" - #include "input.h" #include "dixfont.h" #include @@ -96,9 +94,11 @@ OR PERFORMANCE OF THIS SOFTWARE. #include "dix/dix_priv.h" #include "dix/input_priv.h" #include "miext/extinit_priv.h" +#include "os/audit.h" #include "os/auth.h" #include "os/cmdline.h" #include "os/ddx_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "os/serverlock.h" diff --git a/test/signal-logging.c b/test/signal-logging.c index db8efa852..6120a71d2 100644 --- a/test/signal-logging.c +++ b/test/signal-logging.c @@ -30,6 +30,7 @@ #include #include "os/fmt.h" +#include "os/log_priv.h" #include "assert.h" #include "misc.h" diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c index 46b61f53c..0501e9e75 100644 --- a/xkb/XKBMAlloc.c +++ b/xkb/XKBMAlloc.c @@ -29,9 +29,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include #include +#include + +#include "os/log_priv.h" + #include "misc.h" #include "inputstr.h" -#include #include /***====================================================================***/ diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index 379a555b4..f33fb4ab6 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -39,6 +39,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "dix/dix_priv.h" +#include "os/log_priv.h" #include "os/osdep.h" #include "inputstr.h" diff --git a/xkb/maprules.c b/xkb/maprules.c index 0b6c107ae..9cc6a110b 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -40,6 +40,9 @@ #include #include #include + +#include "os/log_priv.h" + #include "misc.h" #include "inputstr.h" #include "dix.h" diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c index 32892ac20..4f6f875a5 100644 --- a/xkb/xkbAccessX.c +++ b/xkb/xkbAccessX.c @@ -37,6 +37,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "dix/input_priv.h" +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "exglobals.h" diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index cfe9ba11c..dc943d5a2 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -34,6 +34,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "dix/exevents_priv.h" +#include "os/log_priv.h" #include "inputstr.h" #include "exglobals.h" diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index f6158dabf..1fa0366a1 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -40,6 +40,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "os/cmdline.h" +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "misc.h" diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c index 19dce29ab..40fd99163 100644 --- a/xkb/xkbPrKeyEv.c +++ b/xkb/xkbPrKeyEv.c @@ -34,6 +34,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include "dix/input_priv.h" +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "misc.h" diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c index ff0785ddb..afa1d2d17 100644 --- a/xkb/xkbUtils.c +++ b/xkb/xkbUtils.c @@ -58,6 +58,7 @@ DEALINGS IN THE SOFTWARE. #define XK_CYRILLIC #include +#include "os/log_priv.h" #include "xkb/xkbsrv_priv.h" #include "os.h" diff --git a/xkb/xkmread.c b/xkb/xkmread.c index 45da55660..c980448c4 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -30,11 +30,13 @@ #include #include - #include #include #include #include + +#include "os/log_priv.h" + #include "misc.h" #include "inputstr.h" #include "xkbstr.h"