aca9143822a9c12b16b33d479a5abb6495b6b4f0 braney Wed Aug 19 06:59:39 2026 -0700 lib, hgc, hgTables, hgHubConnect: share hubEncode, refs #38123 hgc.c and hgTables.c each had their own copy of hubEncode(). The two bodies were identical, so move the function to hubConnect.c next to isHubTrack() and let both CGIs call the one definition. Also use cgiEncode() rather than htmlEncode() for the db= value in the hgHubConnect assembly list. That value goes in a query string, so cgiEncode() is the right function there. Genome names are already limited to a safe character set, so this changes no output today. diff --git src/hg/hgc/hgc.h src/hg/hgc/hgc.h index a4c0bd16077..abda4b2f4a1 100644 --- src/hg/hgc/hgc.h +++ src/hg/hgc/hgc.h @@ -1,629 +1,626 @@ /* hgc - Human Genome Click processor - gets called when user clicks * on something in human tracks display. This file contains stuff * shared with other modules in hgc, but not in other programs. */ /* Copyright (C) 2014 The Regents of the University of California * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #ifndef HGC_H #define HGC_H #ifndef CART_H #include "cart.h" #endif #ifndef TRACKDB_H #include "trackDb.h" #endif #ifndef BED_H #include "bed.h" #endif #ifndef HDB_H #include "hdb.h" #endif #ifndef HPRINT_H #include "hPrint.h" #endif #ifndef CUSTOMTRACK_H #include "customTrack.h" #endif #ifndef WIKITRACK_H #include "wikiTrack.h" #endif #ifndef VARIOME_H #include "variome.h" #endif #ifndef BEDDETAIL_H #include "bedDetail.h" #endif #include "hgdpGeo.h" #include "dnaMotif.h" #include "togaClick.h" #include "featureBits.h" #include "snp125.h" extern struct cart *cart; /* User's settings. */ extern char *seqName; /* Name of sequence we're working on. */ extern int winStart, winEnd; /* Bounds of sequence. */ extern char *database; /* Name of mySQL database. */ extern char *organism; /* Colloquial name of organism. */ extern char *genome; /* common name, e.g. Mouse, Human */ extern char *scientificName; /* Scientific name of organism. */ extern struct hash *trackHash; /* A hash of all tracks - trackDb valued */ // A helper struct for allowing variable sized user defined tables. Each table // is encoded in one field of the bigBed with '|' as column separators and ';' as // field separators. struct embeddedTbl { struct embeddedTbl *next; // the next custom table char *field; // field name from bigBed, used as title when title is NULL char *title; // title of the table from trackDb, may be NULL char *encodedTbl; // contents of field in bigBed }; void hgcStart(char *title); /* Print out header of web page with title. Set * error handler to normal html error handler. */ char *hgcPath(); /* Return path of this CGI script. */ char *hgcPathAndSettings(); /* Return path with this CGI script and session state variable. */ void hgcAnchorSomewhere(char *group, char *item, char *other, char *chrom); /* Generate an anchor that calls click processing program with item * and other parameters. */ void hgcAnchorWindow(char *group, char *item, int thisWinStart, int thisWinEnd, char *other, char *chrom); /* Generate an anchor that calls click processing program with item * and other parameters, INCLUDING the ability to specify left and * right window positions different from the current window*/ void hgcAnchor(char *group, char *item, char *other); /* Generate an anchor that calls click processing program with item * and other parameters. */ struct trackDb *tdbForTableArg(); /* get trackDb for track passed in table arg */ void writeFramesetType(); /* Write document type that shows a frame set, rather than regular HTML. */ void htmlFramesetStart(char *title); /* Write DOCTYPE HTML and HEAD sections for framesets. */ void alnModernStart(char *classicTitle); /* Begin an alignment page: modern single-page chrome when the modernAlignPage hg.conf flag is set * (showSomeAlignment then renders the modern body), else the classic