src/hg/trfBig/trfBig.c 1.19

1.19 2009/12/24 03:59:38 markd
integrated change from stanford to no print out a error message when trf actually succeeded
Index: src/hg/trfBig/trfBig.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/trfBig/trfBig.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -b -B -U 4 -r1.18 -r1.19
--- src/hg/trfBig/trfBig.c	2 Nov 2009 21:27:50 -0000	1.18
+++ src/hg/trfBig/trfBig.c	24 Dec 2009 03:59:38 -0000	1.19
@@ -100,12 +100,24 @@
 void trfSysCall(char *faFile)
 /* Invoke trf program on file. */
 {
 char command[1024];
-sprintf(command, "cd %s; %s %s 2 7 7 80 10 50 %d -m %s", 
+safef(command, sizeof(command), "cd %s; %s %s 2 7 7 80 10 50 %d -m %s", 
 	tempDir, trfExe, faFile, maxPeriod, doBed ? "-d" : "");
 uglyf("faFile %s, command %s\n", faFile, command);
-maybeSystem(command);
+
+/* Run the system command, expecting a return code of 1, as trf
+   returns the number of successfully processed sequences. */
+int status = system(command);
+if (WIFSIGNALED(status))
+    errAbort("Command terminated by signal %d: %s", WTERMSIG(status), command);
+else if (WIFEXITED(status))
+    {
+    if (WEXITSTATUS(status) != 1)
+        errAbort("Command exited with status %d (expected 1): %s", WEXITSTATUS(status), command);
+    }
+else
+    errAbort("Unexpected exit for command: %s", command);
 }
 
 void outputWithBreaks(FILE *out, char *s, int size, int lineSize)
 /* Print s of given size to file, adding line feeds every now and then. */