From 5fb7f4da6721bfd37734694459b11454ac9cfa85 Mon Sep 17 00:00:00 2001 From: Liang Chang Date: Mon, 7 Feb 2022 06:42:17 +0800 Subject: [PATCH] dtlogin: use POSIX.1 non-local jumps. --- cde/programs/dtlogin/dtchooser.c | 1 - cde/programs/dtlogin/fontpath.c | 1 - cde/programs/dtlogin/reset.c | 6 +++--- cde/programs/dtlogin/server.c | 24 ++++++++++++------------ cde/programs/dtlogin/session.c | 26 +++++++++++++------------- cde/programs/dtlogin/util.c | 6 +++--- cde/programs/dtlogin/vgcallback.c | 8 ++++---- cde/programs/dtlogin/vgmain.c | 6 +++--- cde/programs/dtlogin/vgutil.c | 6 +++--- 9 files changed, 41 insertions(+), 43 deletions(-) diff --git a/cde/programs/dtlogin/dtchooser.c b/cde/programs/dtlogin/dtchooser.c index ce9b6cee2..4880fcd8a 100644 --- a/cde/programs/dtlogin/dtchooser.c +++ b/cde/programs/dtlogin/dtchooser.c @@ -58,7 +58,6 @@ ***************************************************************************/ #include -#include #include #include #include diff --git a/cde/programs/dtlogin/fontpath.c b/cde/programs/dtlogin/fontpath.c index 01b22c912..dbd7d876e 100644 --- a/cde/programs/dtlogin/fontpath.c +++ b/cde/programs/dtlogin/fontpath.c @@ -39,7 +39,6 @@ # include # include # include -# include #if defined(__FreeBSD__) && OSMAJORVERSION > 8 # include #else diff --git a/cde/programs/dtlogin/reset.c b/cde/programs/dtlogin/reset.c index 8924b9242..77e8ea83a 100644 --- a/cde/programs/dtlogin/reset.c +++ b/cde/programs/dtlogin/reset.c @@ -110,12 +110,12 @@ killWindows( Display *dpy, Window window ) } } -static jmp_buf resetJmp; +static sigjmp_buf resetJmp; static SIGVAL abortReset( int arg ) { - longjmp (resetJmp, 1); + siglongjmp (resetJmp, 1); } /* @@ -128,7 +128,7 @@ pseudoReset( Display *dpy ) Window root; int screen; - if (setjmp (resetJmp)) { + if (sigsetjmp (resetJmp, 1)) { LogError( ReadCatalog(MC_LOG_SET,MC_LOG_PSEUDO,MC_DEF_LOG_PSEUDO)); } else { diff --git a/cde/programs/dtlogin/server.c b/cde/programs/dtlogin/server.c index d72a29888..f88deec90 100644 --- a/cde/programs/dtlogin/server.c +++ b/cde/programs/dtlogin/server.c @@ -223,14 +223,14 @@ StartServer( struct display *d ) * the sleep finishes, 0 else */ -static jmp_buf pauseAbort; +static sigjmp_buf pauseAbort; static int serverPauseRet; static SIGVAL serverPauseAbort( int arg ) { Debug ("Display Manager pause timed out\n"); - longjmp (pauseAbort, 1); + siglongjmp (pauseAbort, 1); } static SIGVAL @@ -238,7 +238,7 @@ serverPauseUsr1( int arg ) { Debug ("Display Manager pause received SIGUSR1\n"); ++receivedUsr1; - longjmp (pauseAbort, 1); + siglongjmp (pauseAbort, 1); } static int @@ -248,7 +248,7 @@ serverPause( unsigned t, int serverPid ) serverPauseRet = 0; Debug ("Display Manager pausing until SIGUSR1 from server or timeout\n"); - if (!setjmp (pauseAbort)) { + if (!sigsetjmp (pauseAbort, 1)) { signal (SIGALRM, serverPauseAbort); signal (SIGUSR1, serverPauseUsr1); #ifdef SYSV @@ -308,17 +308,17 @@ serverPause( unsigned t, int serverPid ) /* * this code is complicated by some TCP failings. On * many systems, the connect will occasionally hang forever, - * this trouble is avoided by setting up a timeout to longjmp + * this trouble is avoided by setting up a timeout to siglongjmp * out of the connect (possibly leaving piles of garbage around * inside Xlib) and give up, terminating the server. */ -static jmp_buf openAbort; +static sigjmp_buf openAbort; static SIGVAL abortOpen( int arg ) { - longjmp (openAbort, 1); + siglongjmp (openAbort, 1); } static void @@ -378,7 +378,7 @@ WaitForServer( struct display *d ) for (i = 0; i < (d->openRepeat > 0 ? d->openRepeat : 1); i++) { (void) signal (SIGALRM, abortOpen); (void) alarm ((unsigned) d->openTimeout); - if (!setjmp (openAbort)) { + if (!sigsetjmp (openAbort, 1)) { Debug ("Before XOpenDisplay(%s)\n", d->name); errno = 0; dpy = XOpenDisplay (d->name); @@ -443,14 +443,14 @@ ResetServer( struct display *d ) * ****************************************************************************/ -static jmp_buf pingTime; +static sigjmp_buf pingTime; static int serverDead = FALSE; static SIGVAL PingLost( int arg ) { serverDead = TRUE; - longjmp (pingTime, 1); + siglongjmp (pingTime, 1); } @@ -458,7 +458,7 @@ static SIGVAL PingBlocked( int arg ) { serverDead = FALSE; - longjmp (pingTime, 1); + siglongjmp (pingTime, 1); } @@ -475,7 +475,7 @@ PingServer( struct display *d, Display *alternateDpy ) oldAlarm = alarm (0); oldSig = signal (SIGALRM, PingBlocked); alarm (d->pingTimeout * 60); - if (!setjmp (pingTime)) + if (!sigsetjmp (pingTime, 1)) { Debug ("Ping server\n"); XNoOp (alternateDpy); diff --git a/cde/programs/dtlogin/session.c b/cde/programs/dtlogin/session.c index 56d2b19af..b195126f9 100644 --- a/cde/programs/dtlogin/session.c +++ b/cde/programs/dtlogin/session.c @@ -239,7 +239,7 @@ static struct greet_info greet; static struct verify_info verify; static char *defaultLanguage = NULL; -static jmp_buf abortSession; +static sigjmp_buf abortSession; #ifdef BLS static char *sensitivityLevel; @@ -257,15 +257,15 @@ XrmDatabase XDB; static SIGVAL catchTerm( int arg ) { - longjmp (abortSession, 1); + siglongjmp (abortSession, 1); } -static jmp_buf pingTime; +static sigjmp_buf pingTime; static SIGVAL catchAlrm( int arg ) { - longjmp (pingTime, 1); + siglongjmp (pingTime, 1); } #if defined(__STDC__) @@ -522,7 +522,7 @@ ManageSession( struct display *d ) #endif clientPid = 0; - if (!setjmp (abortSession)) { + if (!sigsetjmp (abortSession, 1)) { signal (SIGTERM, catchTerm); /* * Start the clients, changing uid/groups @@ -543,7 +543,7 @@ ManageSession( struct display *d ) for (;;) { if (d->pingInterval) { - if (!setjmp (pingTime)) + if (!sigsetjmp (pingTime, 1)) { signal (SIGALRM, catchAlrm); alarm (d->pingInterval * 60); @@ -1064,12 +1064,12 @@ DeleteXloginResources( struct display *d, Display *dpy ) #if 0 /* dead code: transferred to Dtgreet */ -static jmp_buf syncJump; +static sigjmp_buf syncJump; static SIGVAL syncTimeout () { - longjmp (syncJump, 1); + siglongjmp (syncJump, 1); } @@ -1079,7 +1079,7 @@ Display *dpy; { Debug ("SecureDisplay():\n"); signal (SIGALRM, syncTimeout); - if (setjmp (syncJump)) { + if (sigsetjmp (syncJump, 1)) { LogError(ReadCatalog(MC_LOG_SET,MC_LOG_NO_SECDPY,MC_DEF_LOG_NO_SECDPY), d->name); SessionExit (d, RESERVER_DISPLAY); @@ -1689,12 +1689,12 @@ StartClient( struct verify_info *verify, struct display *d, int *pidp ) } } -static jmp_buf tenaciousClient; +static sigjmp_buf tenaciousClient; static SIGVAL waitAbort( int arg ) { - longjmp (tenaciousClient, 1); + siglongjmp (tenaciousClient, 1); } #if defined(SYSV) || defined(SVR4) @@ -1723,7 +1723,7 @@ AbortClient( int pid ) return 0; } } - if (!setjmp (tenaciousClient)) { + if (!sigsetjmp (tenaciousClient, 1)) { (void) signal (SIGALRM, waitAbort); (void) alarm ((unsigned) 10); retId = wait ((waitType *) 0); @@ -1948,7 +1948,7 @@ RunGreeter( struct display *d, struct greet_info *greet, #endif greeterPid = 0; - if (!setjmp (abortSession)) { + if (!sigsetjmp (abortSession, 1)) { signal(SIGTERM, catchTerm); /* diff --git a/cde/programs/dtlogin/util.c b/cde/programs/dtlogin/util.c index 0ae40af1c..e42d7a99b 100644 --- a/cde/programs/dtlogin/util.c +++ b/cde/programs/dtlogin/util.c @@ -428,13 +428,13 @@ SetHourGlassCursor( Display *dpy, Window w ) #define DELIM " \t" /* delimiters in language list */ -static jmp_buf langJump; +static sigjmp_buf langJump; static SIGVAL MakeLangAbort( int arg ) { - longjmp (langJump, 1); + siglongjmp (langJump, 1); } void @@ -459,7 +459,7 @@ MakeLangList( void ) signal (SIGALRM, MakeLangAbort); alarm ((unsigned) langListTimeout); - if (!setjmp (langJump)) { + if (!sigsetjmp (langJump, 1)) { ScanNLSDir(DEF_NLS_DIR); } else { diff --git a/cde/programs/dtlogin/vgcallback.c b/cde/programs/dtlogin/vgcallback.c index 3da9a5d3d..d0571fe50 100644 --- a/cde/programs/dtlogin/vgcallback.c +++ b/cde/programs/dtlogin/vgcallback.c @@ -947,7 +947,7 @@ OptionsUnmapCB( Widget wd, XtPointer client_data, XtPointer call_data ) * ***************************************************************************/ -static jmp_buf pingTime; +static sigjmp_buf pingTime; static int serverDead = FALSE; static int pingInterval = 0; /* ping interval (sec.) */ static int pingTimeout; /* ping timeout (sec.) */ @@ -956,7 +956,7 @@ static void PingLost( void ) { serverDead = TRUE; - longjmp (pingTime, 1); + siglongjmp (pingTime, 1); } @@ -965,7 +965,7 @@ PingBlocked( int arg ) { serverDead = TRUE; - longjmp (pingTime, 1); + siglongjmp (pingTime, 1); } @@ -980,7 +980,7 @@ PingServer( void ) oldAlarm = alarm (0); oldSig = signal (SIGALRM, PingBlocked); alarm (pingTimeout * 60); - if (!setjmp (pingTime)) + if (!sigsetjmp (pingTime, 1)) { XSync (dpyinfo.dpy, 0); } diff --git a/cde/programs/dtlogin/vgmain.c b/cde/programs/dtlogin/vgmain.c index cf3067986..07e1e77fc 100644 --- a/cde/programs/dtlogin/vgmain.c +++ b/cde/programs/dtlogin/vgmain.c @@ -671,13 +671,13 @@ main( int argc, char **argv ) #define MINTIMEOUT 20 -static jmp_buf syncJump; +static sigjmp_buf syncJump; static SIGVAL syncTimeout( int arg ) { - longjmp (syncJump, 1); + siglongjmp (syncJump, 1); } @@ -707,7 +707,7 @@ InitToolKit( int argc, char **argv ) */ signal (SIGALRM, syncTimeout); - if (setjmp (syncJump)) { + if (sigsetjmp (syncJump, 1)) { LogError( ReadCatalog(MC_LOG_SET,MC_LOG_NO_DPYINIT,MC_DEF_LOG_NO_DPYINIT), dpyinfo.name); diff --git a/cde/programs/dtlogin/vgutil.c b/cde/programs/dtlogin/vgutil.c index 7987f5fcd..26a1f86fd 100644 --- a/cde/programs/dtlogin/vgutil.c +++ b/cde/programs/dtlogin/vgutil.c @@ -824,14 +824,14 @@ ReadCatalogXms(int setn, int msgn, char *dflt) * grab/release the server and keyboard ***************************************************************************/ -static jmp_buf syncJump; +static sigjmp_buf syncJump; static int grabServer; /* Boolean on grabbing server */ static int grabTimeout; /* timeout to grab server */ static SIGVAL syncTimeout( int arg ) { - longjmp (syncJump, 1); + siglongjmp (syncJump, 1); } int @@ -853,7 +853,7 @@ SecureDisplay( void ) * grab server then the keyboard... */ signal (SIGALRM, syncTimeout); - if (setjmp (syncJump)) { + if (sigsetjmp (syncJump, 1)) { LogError(ReadCatalog(MC_LOG_SET,MC_LOG_NO_SECDPY,MC_DEF_LOG_NO_SECDPY), dpyinfo.name); return(1);