774479fda06428280150d609bdf4052f5f35d571
hiram
  Wed Feb 13 14:17:16 2019 -0800
list functions moved to list.c refs #18869

diff --git src/hg/hubApi/getData.c src/hg/hubApi/getData.c
index ead339d..7dc088d 100644
--- src/hg/hubApi/getData.c
+++ src/hg/hubApi/getData.c
@@ -1,55 +1,64 @@
 /* manage endpoint /getData/ functions */
 
 #include "dataApi.h"
 
 void getTrackData()
 /* return data from a track */
 {
 }
 
 void getSequenceData()
 /* return DNA sequence, given at least a db=name and chrom=chr,
    optionally start and end  */
 {
 char *db = cgiOptionalString("db");
 char *chrom = cgiOptionalString("chrom");
 char *start = cgiOptionalString("start");
 char *end = cgiOptionalString("end");
 
 if (isEmpty(db))
     jsonErrAbort("missing URL db=<ucscDb> name for endpoint '/getData/sequence");
 if (isEmpty(chrom))
     jsonErrAbort("missing URL chrom=<name> for endpoint '/getData/sequence?db=%s", db);
 if (chromSeqFileExists(db, chrom))
     {
     struct chromInfo *ci = hGetChromInfo(db, chrom);
     struct dnaSeq *seq = NULL;
     if (isEmpty(start) || isEmpty(end))
 	seq = hChromSeqMixed(db, chrom, 0, 0);
     else
 	seq = hChromSeqMixed(db, chrom, sqlSigned(start), sqlSigned(end));
     if (NULL == seq)
         jsonErrAbort("can not find sequence for chrom=%s for endpoint '/getData/sequence?db=%s&chrom=%s", chrom, db, chrom);
     struct jsonWrite *jw = jsonStartOutput();
     jsonWriteString(jw, "db", db);
     jsonWriteString(jw, "chrom", chrom);
     if (isEmpty(start) || isEmpty(end))
 	{
         jsonWriteNumber(jw, "start", (long long)0);
         jsonWriteNumber(jw, "end", (long long)ci->size);
 	}
     else
 	{
         jsonWriteNumber(jw, "start", (long long)sqlSigned(start));
         jsonWriteNumber(jw, "end", (long long)sqlSigned(end));
 	}
     jsonWriteString(jw, "dna", seq->dna);
     jsonWriteObjectEnd(jw);
     fputs(jw->dy->string,stdout);
     freeDnaSeq(&seq);
     }
 else
     jsonErrAbort("can not find specified chrom=%s in sequence for endpoint '/getData/sequence?db=%s&chrom=%s", chrom, db, chrom);
 }
 
-
+void apiGetData(char *words[MAX_PATH_INFO])
+/* 'getData' function, words[1] is the subCommand */
+{
+if (sameWord("track", words[1]))
+    getTrackData();
+else if (sameWord("sequence", words[1]))
+    getSequenceData();
+else
+    jsonErrAbort("do not recognize endpoint function: '/%s/%s'", words[0], words[1]);
+}