f02bb3ce9489bb2c922188ebf94f52a0e80dd757
braney
  Mon Jul 5 10:45:34 2021 -0700
change system() calls to pipeline() calls.

diff --git src/hg/hgc/barChartClick.c src/hg/hgc/barChartClick.c
index f12fb48..3775785 100644
--- src/hg/hgc/barChartClick.c
+++ src/hg/hgc/barChartClick.c
@@ -347,52 +347,48 @@
 struct barChartCategory *categ;
 fprintf(f, "%s\t%s\n", "category", "color");
 for (categ = categs; categ != NULL; categ = categ->next)
     {
     //fprintf(f, "%s\t#%06X\n", categ->label, categ->color);
     fprintf(f, "%s\t%d\n", categ->label, categ->color);
     }
 fclose(f);
 return cloneString(colorTn.forCgi);
 }
 
 static void printBoxplot(char *df, char *item, char *name2, char *units, char *colorFile)
 /* Plot data frame to image file and include in HTML */
 {
 struct tempName pngTn;
-struct dyString *cmd = dyStringNew(0);
 trashDirFile(&pngTn, "hgc", "barChart", ".png");
 
 // to help with QAing the change, we add the "oldFonts" CGI parameter so QA can compare
 // old and new fonts to make sure that things are still readible on mirrors and servers
 // without the new fonts installed. This only needed during the QA phase
 bool useOldFonts = cgiBoolean("oldFonts");
 
 /* Exec R in quiet mode, without reading/saving environment or workspace */
 char *pipeCmd[] = {"Rscript","--vanilla","--slave","hgcData/barChartBoxplot.R", 
     item, units, colorFile, df, pngTn.forHtml, 
-    isEmpty(name2) ? "n/a" : name2, useOldFonts ? "1" : "0"};
+    isEmpty(name2) ? "n/a" : name2, useOldFonts ? "1" : "0", NULL};
 struct pipeline *pl = pipelineOpen1(pipeCmd, pipelineWrite | pipelineNoAbort, "/dev/null", NULL);
 int ret = pipelineWait(pl);
 
-/* put command in string in case of error. */
-dyStringPrintf(cmd, "Rscript --vanilla --slave hgcData/barChartBoxplot.R %s '%s' %s %s %s %s %d",       
-                                item, units, colorFile, df, pngTn.forHtml, isEmpty(name2) ? "n/a" : name2, useOldFonts);
 if (ret == 0)
     printf("<img src = \"%s\" border=1><br>\n", pngTn.forHtml);
 else
-    warn("Error creating boxplot from sample data with command: %s", cmd->string);
+    warn("Error creating boxplot from sample data with command: %s", pipelineDesc(pl));
 }
 
 static double estimateStringWidth(char *s)
 /* Get estimate of string width based on a memory font that is about the
  * same size as svg will be using.  After much research I don't think we
  * can get the size from the server, would have to be in Javascript to get
  * more precise */
 {
 MgFont *font = mgHelvetica14Font();
 return mgFontStringWidth(font, s);
 }
 
 static double longestLabelSize(struct barChartCategory *categList)
 /* Get estimate of longest label in pixels */
 {