d3aaebb71ef2b82ece4340766c0de67541ce7362
chmalee
  Wed Jul 5 16:41:56 2023 -0700
Fix for multiple hgPcr results feature, actually use the stored primer pair in the psl qName, refs #31608

diff --git src/hg/hgPcr/hgPcr.c src/hg/hgPcr/hgPcr.c
index aed2967..f37fc3c 100644
--- src/hg/hgPcr/hgPcr.c
+++ src/hg/hgPcr/hgPcr.c
@@ -511,39 +511,46 @@
  * is only one set of primers in the input form. */
 {
 if (gpo == NULL)
     return;
 FILE *f = mustOpen(fileName, "a");
 fprintf(f, "%s\t%s\n", gpo->fPrimer, gpo->rPrimer);
 carefulClose(&f);
 }
 
 void writePcrResultTrack(struct gfPcrOutput *gpoList, char *db, char *target, boolean appendToResults)
 /* Write trash files and store their name in a cart variable. */
 {
 char *cartVar = pcrResultCartVar(db);
 struct tempName bedTn, primerTn;
 char buf[2048];
-char *pslFile, *txtFile, *cartResult;
+char *pslFile, *txtFile, *cartTarget, *cartResult;
 if ( (cartResult = cartOptionalString(cart, cartVar)) != NULL && appendToResults)
     {
     char *pcrFiles[3];
     chopByWhite(cloneString(cartResult), pcrFiles, 3);
     pslFile = pcrFiles[0];
     txtFile = pcrFiles[1];
+    cartTarget = pcrFiles[2];
     gfPcrOutputWriteAll(gpoList, "psl", NULL, pslFile);
     writePrimers(gpoList, txtFile);
+    if (isNotEmpty(target) && isEmpty(cartTarget))
+        {
+        /* User is adding a targetDb search */
+        safef(buf, sizeof(buf), "%s %s %s", pslFile, txtFile, target);
+        cartSetString(cart, cartVar, buf);
+        }
     }
 else
     {
     trashDirFile(&bedTn, "hgPcr", "hgPcr", ".psl");
     trashDirFile(&primerTn, "hgPcr", "hgPcr", ".txt");
     gfPcrOutputWriteAll(gpoList, "psl", NULL, bedTn.forCgi);
     writePrimers(gpoList, primerTn.forCgi);
     if (isNotEmpty(target))
         safef(buf, sizeof(buf), "%s %s %s", bedTn.forCgi, primerTn.forCgi, target);
     else
         safef(buf, sizeof(buf), "%s %s", bedTn.forCgi, primerTn.forCgi);
     cartSetString(cart, cartVar, buf);
     }
 }