[PATCH] setup: fix abnormal exit test for postinstall scripts

Igor Peshansky pechtcha@cs.nyu.edu
Tue Jan 31 14:55:00 GMT 2006


On Mon, 23 Jan 2006, Igor Peshansky wrote:

> Just noticed that the postinstall mechanism in setup inverts the test for
> abnormal exit.  The attached one-liner patch fixes that.  ChangeLog below.

Dave's advice in <http://cygwin.com/ml/cygwin/2006-01/msg01475.html>, made
me realize that setup will always rename the script to ".done", even if it
didn't complete properly (i.e., exited with a non-zero exit code).  Now
that we detect the code correctly, let's also use that to not rename
failed scripts for easier detection (patch attached).  ChangeLog below.

Note that this will put a bit of extra burden on package maintainers to
ensure that their scripts always return a zero exit code.  Most scripts
already do that, though.
	Igor
==============================================================================
2006-01-31  Igor Peshansky  <pechtcha@cs.nyu.edu>

	* script.cc (Script::run): Fix inverted test for abnormal exit.
	Do not rename to ".done" unless completed successfully.

-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_	    pechtcha@cs.nyu.edu | igor@watson.ibm.com
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"
-------------- next part --------------
Index: script.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/script.cc,v
retrieving revision 2.21
diff -u -p -r2.21 script.cc
--- script.cc	14 Oct 2005 04:00:50 -0000	2.21
+++ script.cc	31 Jan 2006 14:39:40 -0000
@@ -243,14 +243,15 @@ Script::run() const
   if (to_log && !file_out.isEmpty ())
     log(LOG_BABBLE) << file_out << endLog;
 
-  if (!retval)
+  if (retval)
     log(LOG_PLAIN) << "abnormal exit: exit code=" << retval << endLog;;
 
   /* if file exists then delete it otherwise just ignore no file error */
   io_stream::remove (String ("cygfile://") + scriptName + ".done");
 
-  io_stream::move (String ("cygfile://") + scriptName,
-                   String ("cygfile://") + scriptName + ".done");
+  if (!retval)
+    io_stream::move (String ("cygfile://") + scriptName,
+                     String ("cygfile://") + scriptName + ".done");
 
   return retval;
 }


More information about the Cygwin-apps mailing list