e310cad5467b2f306c8f90b23f749ad9f6a43296
hiram
  Sat May 25 09:47:39 2019 -0700
clean up argList processing code review refs #23521 #23427

diff --git src/hg/hubApi/dataApi.h src/hg/hubApi/dataApi.h
index 8c233e0..d40e8c9 100644
--- src/hg/hubApi/dataApi.h
+++ src/hg/hubApi/dataApi.h
@@ -37,49 +37,50 @@
 #endif
 
 /* error return codes */
 #define err301	301
 #define err301Msg	"Moved Permanently"
 #define err400	400
 #define err400Msg	"Bad Request"
 #define err403	403
 #define err403Msg	"Forbidden"
 #define err404	404
 #define err404Msg	"Not Found"
 #define err429	429
 #define err429Msg	"Too Many Requests"
 
 /* list of all potential arguments */
-#define argNull	""
 #define argHubUrl	"hubUrl"
 #define argGenome	"genome"
 #define argTrackLeavesOnly	"trackLeavesOnly"
 #define argTrack	"track"
 #define argChrom	"chrom"
 #define argStart	"start"
 #define argEnd	"end"
 #define argMaxItemsOutput	"maxItemsOutput"
 #define argJsonOutputArrays	"jsonOutputArrays"
 
-/* listing of allowed legal arguments for each function */
-#define argsListPublicHubs argNull
-#define argsListUcscGenomes argNull
-#define argsListHubGenomes argHubUrl
-#define argsListTracks argGenome";"argHubUrl";"argTrackLeavesOnly
-#define argsListChromosomes argGenome";"argHubUrl";"argTrack
-#define argsGetDataTrack argGenome";"argHubUrl";"argTrack";"argChrom";"argStart";"argEnd";"argMaxItemsOutput";"argJsonOutputArrays
-#define argsGetDataSequence argGenome";"argHubUrl";"argTrack";"argChrom";"argStart";"argEnd
+/* valid argument listings to verify extraneous arguments
+ *  initialized in hubApi.c
+ */
+extern char *argListPublicHubs[];
+extern char *argListUcscGenomes[];
+extern char *argListHubGenomes[];
+extern char *argListTracks[];
+extern char *argListChromosomes[];
+extern char *argGetDataTrack[];
+extern char *argGetDataSequence[];
 
 /* maximum number of words expected in PATH_INFO parsing
  *   so far only using 2
  */
 #define MAX_PATH_INFO 32
 
 /* maximum amount of DNA allowed in a get sequence request */
 #define MAX_DNA_LENGTH	499999999
 /* this size is directly related to the max limit in needMem used in
  * jsonWriteString
  */
 
 extern long enteredMainTime;	/* will become = clock1000() on entry */
 
 /* limit amount of output to a maximum to avoid overload */
@@ -94,32 +95,32 @@
  * This option will limit to only the actual track entries with data
  */
 extern boolean trackLeavesOnly;	/* set by CGI parameter 'trackLeavesOnly' */
 
 /* this selects output type 'arrays', where the default type is: objects */
 extern boolean jsonOutputArrays; /* set by CGI parameter 'jsonOutputArrays' */
 
 extern boolean measureTiming;	/* set by CGI parameters */
 
 /*  functions in hubApi.c */
 struct hubPublic *hubPublicDbLoadAll();
 
 struct dbDb *ucscDbDb();
 /* return the dbDb table as an slList */
 
-char *verifyLegalArgs(char *validArgList);
-/* validArgList is a semicolon;separated;list;of;valid;arguments
+char *verifyLegalArgs(char *validArgList[]);
+/* validArgList is an array of strings for valid arguments
  * returning string of any other arguments not on that list found in
  * cgiVarList(), NULL when none found.
  */
 
 /* ######################################################################### */
 /*  functions in apiUtils.c */
 
 void startProcessTiming();
 /* for measureTiming, beginning processing */
 
 void apiFinishOutput(int errorCode, char *errorString, struct jsonWrite *jw);
 /* finish json output, potential output an error code other than 200 */
 
 void apiErrAbort(int errorCode, char *errString, char *format, ...);
 /* Issue an error message in json format, and exit(0) */