42f147365cff4903feadc57b95dd6fe94e2d8d4b hiram Mon Jul 21 13:29:35 2014 -0700 completed the joinedRmsk click handling refs #9741 diff --git src/hg/hgc/joinedRmskClick.c src/hg/hgc/joinedRmskClick.c index 8355772..cfae48d 100644 --- src/hg/hgc/joinedRmskClick.c +++ src/hg/hgc/joinedRmskClick.c @@ -229,38 +229,38 @@ int offset = cartInt (cart, "o"); if (offset >= 0) { struct sqlConnection *conn2 = hAllocConn (database); struct sqlResult *sr2; char **row; char query[256]; char qTable[64]; boolean hasBin; int start = cartInt (cart, "o"); if (hTableExists (database, table)) { hFindSplitTable (database, seqName, table, qTable, &hasBin); - safef (query, sizeof (query), + sqlSafef (query, sizeof (query), "select * from %s where chrom = '%s' and alignStart >= %d" " and id = %s", qTable, seqName, start, repeat); sr2 = sqlGetResult (conn2, query); if ((row = sqlNextRow (sr2)) != NULL) { - struct rmskJoined *rmJoin = rmskJoinedLoad (row); + struct rmskJoined *rmJoin = rmskJoinedLoad (row + hasBin); char class[32]; class[0] = '\0'; char family[32]; family[0] = '\0'; char *poundPtr = index (rmJoin->name, '#'); if (poundPtr) { // Terminate name string properly safecpy (class, sizeof (class), poundPtr + 1); *poundPtr = '\0'; char *slashPtr = index (class, '/'); if (slashPtr) { // Terminate class string properly @@ -276,31 +276,31 @@ printf ("<b>Joined Element Genomic Range:</b> %s:%d-%d<br>\n", rmJoin->chrom, rmJoin->alignStart, rmJoin->alignEnd); printf ("<br><br>\n"); } sqlFreeResult (&sr2); } /* * Locate *.out annotation for this element */ if (hTableExists (database, outTable)) { int isFirst = 0; struct rmskOut2 *ro; hFindSplitTable (database, seqName, outTable, qTable, &hasBin); - safef (query, sizeof (query), + sqlSafef (query, sizeof (query), "select * from %s where genoName = '%s' and genoStart >= %d" " and id = %s", qTable, seqName, start, repeat); sr2 = sqlGetResult (conn2, query); printf ("<h4>RepeatMasker Annotation:</h4>\n"); printf ("The RepeatMasker annotation line(s) for this element. " "If the element is fragmented the output will contain one " "line per joined fragment.<p>\n"); printf ("<table cellspacing=\"0\">\n"); while ((row = sqlNextRow (sr2)) != NULL) { ro = rmskOut2Load (row + hasBin); if (!isFirst++) printOutTableHeader (ro->strand[0]); printf (" <tr>\n"); @@ -343,31 +343,31 @@ } sqlFreeResult (&sr2); printf ("</table>\n"); } printf ("<br><br>\n"); /* * Locate *.align data for this element */ if (hTableExists (database, alignTable)) { struct rmskAlign *ro; hFindSplitTable (database, seqName, alignTable, qTable, &hasBin); - safef (query, sizeof (query), + sqlSafef (query, sizeof (query), "select * from %s where genoName = '%s' and genoStart >= %d" " and id = %s", qTable, seqName, start, repeat); sr2 = sqlGetResult (conn2, query); printf ("<h4>RepeatMasker Alignments:</h4>\n"); printf ("The raw alignment data used by RepeatMasker to generate " "the final annotation call for this element. NOTE: The " "aligned sequence names and consensus positions may differ " "from the final annotation.<p>\n"); printf ("<table>\n"); while ((row = sqlNextRow (sr2)) != NULL) { ro = rmskAlignLoad (row + hasBin); printf (" <tr>\n"); printf (" <td>%d</td>\n", ro->swScore);