[PATCH xserver 1/1] os: Pass the FatalError message to OsVendorFatalError

Jeremy Huddleston jeremyhu at apple.com
Sun Feb 19 14:42:13 PST 2012


Ping.  I know this looks pointless, but I need it for a follwup patch which uses this info in XQuartz's OsVendorFatalError.

On Feb 17, 2012, at 1:47 PM, Jeremy Huddleston <jeremyhu at apple.com> wrote:

> Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
> ---
> hw/dmx/dmxinit.c             |    2 +-
> hw/dmx/dmxlog.c              |    3 ---
> hw/kdrive/src/kdrive.c       |    2 +-
> hw/vfb/InitOutput.c          |    2 +-
> hw/xfree86/common/xf86Init.c |    2 +-
> hw/xnest/Init.c              |    2 +-
> hw/xquartz/darwin.c          |    2 +-
> hw/xwin/winerror.c           |    2 +-
> include/os.h                 |    2 +-
> os/log.c                     |   16 ++++++++++------
> test/ddxstubs.c              |    2 +-
> 11 files changed, 19 insertions(+), 18 deletions(-)
> 
> diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
> index 57c2425..9388833 100644
> --- a/hw/dmx/dmxinit.c
> +++ b/hw/dmx/dmxinit.c
> @@ -855,7 +855,7 @@ void OsVendorInit(void)
>  * OsVendorVErrorFProc will cause \a VErrorF() (which is called by the
>  * two routines mentioned here, as well as by others) to use the
>  * referenced routine instead of \a vfprintf().) */
> -void OsVendorFatalError(void)
> +void OsVendorFatalError(const char *f, va_list args)
> {
> }
> 
> diff --git a/hw/dmx/dmxlog.c b/hw/dmx/dmxlog.c
> index 94b8035..0ebe9f9 100644
> --- a/hw/dmx/dmxlog.c
> +++ b/hw/dmx/dmxlog.c
> @@ -102,9 +102,6 @@ static void VFatalError(const char *format, va_list args)
> {
>     VErrorF(format, args);
>     ErrorF("\n");
> -#ifdef DDXOSFATALERROR
> -    OsVendorFatalError();
> -#endif
>     AbortServer();
>     /*NOTREACHED*/
> }
> diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
> index f6cc351..5d69830 100644
> --- a/hw/kdrive/src/kdrive.c
> +++ b/hw/kdrive/src/kdrive.c
> @@ -1167,7 +1167,7 @@ KdInitOutput (ScreenInfo    *pScreenInfo,
> }
> 
> void
> -OsVendorFatalError(void)
> +OsVendorFatalError(const char *f, va_list args)
> {
> }
> 
> diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
> index e1af5a4..71c7b6d 100644
> --- a/hw/vfb/InitOutput.c
> +++ b/hw/vfb/InitOutput.c
> @@ -219,7 +219,7 @@ OsVendorInit(void)
> }
> 
> void
> -OsVendorFatalError(void)
> +OsVendorFatalError(const char *f, va_list args)
> {
> }
> 
> diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
> index 5263b5f..56550c9 100644
> --- a/hw/xfree86/common/xf86Init.c
> +++ b/hw/xfree86/common/xf86Init.c
> @@ -1036,7 +1036,7 @@ AbortDDX(enum ExitCode error)
> }
> 
> void
> -OsVendorFatalError(void)
> +OsVendorFatalError(const char *f, va_list args)
> {
> #ifdef VENDORSUPPORT
>     ErrorF("\nPlease refer to your Operating System Vendor support pages\n"
> diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
> index af57518..b7e76b5 100644
> --- a/hw/xnest/Init.c
> +++ b/hw/xnest/Init.c
> @@ -138,7 +138,7 @@ void OsVendorInit(void)
>     return;
> }
> 
> -void OsVendorFatalError(void)
> +void OsVendorFatalError(const char *f, va_list args)
> {
>     return;
> }
> diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
> index 465a96d..5d2da03 100644
> --- a/hw/xquartz/darwin.c
> +++ b/hw/xquartz/darwin.c
> @@ -605,7 +605,7 @@ void InitOutput( ScreenInfo *pScreenInfo, int argc, char **argv )
> /*
>  * OsVendorFatalError
>  */
> -void OsVendorFatalError( void )
> +void OsVendorFatalError(const char *f, va_list args)
> {
>     ErrorF( "   OsVendorFatalError\n" );
> }
> diff --git a/hw/xwin/winerror.c b/hw/xwin/winerror.c
> index 0440d13..82ab382 100644
> --- a/hw/xwin/winerror.c
> +++ b/hw/xwin/winerror.c
> @@ -71,7 +71,7 @@ OsVendorVErrorF (const char *pszFormat, va_list va_args)
>  * Attempt to do last-ditch, safe, important cleanup here.
>  */
> void
> -OsVendorFatalError (void)
> +OsVendorFatalError (const char *f, va_list args)
> {
>   /* Don't give duplicate warning if UseMsg was called */
>   if (g_fSilentFatalError)
> diff --git a/include/os.h b/include/os.h
> index 48ce329..ae7a6f1 100644
> --- a/include/os.h
> +++ b/include/os.h
> @@ -296,7 +296,7 @@ extern _X_EXPORT void OsInit(void);
> 
> extern _X_EXPORT void OsCleanup(Bool);
> 
> -extern _X_EXPORT void OsVendorFatalError(void);
> +extern _X_EXPORT void OsVendorFatalError(const char *f, va_list args) _X_ATTRIBUTE_PRINTF(1,0);;
> 
> extern _X_EXPORT void OsVendorInit(void);
> 
> diff --git a/os/log.c b/os/log.c
> index 671a01b..cdff7d1 100644
> --- a/os/log.c
> +++ b/os/log.c
> @@ -585,6 +585,7 @@ void
> FatalError(const char *f, ...)
> {
>     va_list args;
> +    va_list args2;
>     static Bool beenhere = FALSE;
> 
>     if (beenhere)
> @@ -592,20 +593,23 @@ FatalError(const char *f, ...)
>     else
> 	ErrorF("\nFatal server error:\n");
> 
> -    va_start(args, f);
> +    /* Make a copy for OsVendorFatalError */
> +    va_copy(args2, args);
> +
> #ifdef __APPLE__
>     {
> -        va_list args2;
> -        va_copy(args2, args);
> -        (void)vsnprintf(__crashreporter_info_buff__, sizeof(__crashreporter_info_buff__), f, args2);
> -        va_end(args2);
> +        va_list apple_args;
> +        va_copy(apple_args, args);
> +        (void)vsnprintf(__crashreporter_info_buff__, sizeof(__crashreporter_info_buff__), f, apple_args);
> +        va_end(apple_args);
>     }
> #endif
>     VErrorF(f, args);
>     va_end(args);
>     ErrorF("\n");
>     if (!beenhere)
> -	OsVendorFatalError();
> +	OsVendorFatalError(f, args2);
> +    va_end(args2);
>     if (!beenhere) {
> 	beenhere = TRUE;
> 	AbortServer();
> diff --git a/test/ddxstubs.c b/test/ddxstubs.c
> index baf2a7a..afaadfc 100644
> --- a/test/ddxstubs.c
> +++ b/test/ddxstubs.c
> @@ -43,7 +43,7 @@ void ProcessInputEvents(void) {
> void OsVendorInit(void) {
> }
> 
> -void OsVendorFatalError(void) {
> +void OsVendorFatalError(const char *f, va_list args) {
> }
> 
> void AbortDDX(enum ExitCode error) {
> -- 
> 1.7.9
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 



More information about the xorg-devel mailing list