Detect error in $deblob by teeing the whole if/cmd into a temp file,
authorlxoliva <lxoliva@559672b5-ba27-0410-b829-e8f1faed8b1b>
Mon, 9 Mar 2009 00:31:22 +0000 (00:31 +0000)
committerlxoliva <lxoliva@559672b5-ba27-0410-b829-e8f1faed8b1b>
Mon, 9 Mar 2009 00:31:22 +0000 (00:31 +0000)
and renaming it only in case of success.

git-svn-id: http://www.fsfla.org/svn/fsfla/software/linux-libre/scripts@4758 559672b5-ba27-0410-b829-e8f1faed8b1b

deblob-main

index fb9a0e4fb412cf52c2ad24aca85a607f5a4406d1..71840776c75f2fedd484c7550328ad4a69bba41d 100755 (executable)
@@ -178,10 +178,15 @@ echo Copying linux-$kver to linux-$kver-$libre
 cp linux-$kver.tar linux-$kver-$libre.tar
 cp -lR linux-$kver/. linux-$kver-$libre
 
+rm -f linux-$kver-$libre.log linux-$kver-$libre.log.tmp
 echo Deblobbing within linux-$kver-$libre, saving output to linux-$kver-$libre.log
-if (cd linux-$kver-$libre && /bin/sh ../$deblob $force) 2>&1 | tee -a linux-$kver-$libre.log; then
-  :
-else
+# We can't just pipe deblob into tee, for then we fail to detect 
+# error conditions.  Use file renaming to tell whether we succeeded.
+if (cd linux-$kver-$libre && /bin/sh ../$deblob $force) 2>&1; then
+  mv linux-$kver-$libre.log.tmp linux-$kver-$libre.log
+fi | tee linux-$kver-$libre.log.tmp
+if test ! -f linux-$kver-$libre.log; then
+  mv linux-$kver-$libre.log.tmp linux-$kver-$libre.log
   echo $deblob failed, aborting >&2
   exit 1
 fi