Bug 338

Summary: OS layer - Replace calls to exit(1) with calls to FatalError
Product: xorg Reporter: Harold L Hunt II <harold>
Component: Server/GeneralAssignee: Harold L Hunt II <harold>
Status: CLOSED FIXED QA Contact:
Severity: trivial    
Priority: highest    
Version: unspecified   
Hardware: x86 (IA32)   
OS: All   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 213    
Attachments:
Description Flags
Remove exit(1) calls from os/utils.c
none
Remove exit(1) calls from os/xdmcp.c none

Description Harold L Hunt II 2004-03-17 12:36:29 UTC
There are about 12 places in os/utils.c and os/xdmcp.c where a call is made to
exit(1), often in unison with a call to ErrorF.  Calling exit(1) directly
prevents the DDX layer from doing its thing in the OsVendorFatalError (on Cygwin
this is used to popup a message box point the user to support information).

All of these calls to exit(1) occur in functions and files where calls to
FatalError are also made, and some of these are as trivial as a command-line
argument being malformed (which has no reason for bypassing FatalError).

These patches leave intact the following valid calls to exit() in the OS layer:

1) utils.c/AutoResetServer - Looks to be intentional here.
2) utils.c/ProcessCommandLine - "-help" processing after UseMsg() returns.
3) utils.c/System,Popen,Fopen - After calls to fork().
4) log.c/AbortServer - Happens after AbortDDX is called, valid.
5) xdmcp.c - None (all direct calls to exit were removed).

I took care to preserve the placement of the ErrorF messages at the top of the
log file (sometimes printed above UseMsg output) and duplicated such message in
a final call to FatalError.  In simpler cases not involving other output I
directly replaced the ErrorF and exit calls with a single call to FatalError.

This patch has been build and run tested on Cygwin and I consider it extremely safe.

I will be committing this barring any unusually strong protest.

Harold
Comment 1 Harold L Hunt II 2004-03-17 12:37:23 UTC
Created attachment 142 [details] [review]
Remove exit(1) calls from os/utils.c
Comment 2 Harold L Hunt II 2004-03-17 12:37:48 UTC
Created attachment 143 [details] [review]
Remove exit(1) calls from os/xdmcp.c
Comment 3 Harold L Hunt II 2004-03-17 16:05:36 UTC
Yay, I already committed this and forgot about it.  CVS commit message below.

Harold


CVSROOT:	/cvs/xorg
Module name:	xc
Changes by:	harold@pdx.	04/03/02 11:27:34

Log message:
  Replace a handful of calls to ErrorF and exit(1) with a single call to
FatalError.  These direct calls to exit(1) made it impossible to do anything
ddx-specific in these cases; note that most of these calls occur during argument
processing.

Modified files:
      xc/programs/Xserver/os/:	Tag: XORG-RELEASE-1
        utils.c xdmcp.c 
  
  Revision      Changes    Path
  1.1.4.6.2.2   +3 -3      xc/programs/Xserver/os/utils.c
  1.1.4.5.2.1   +17 -33    xc/programs/Xserver/os/xdmcp.c

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.