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); } }