9723799cf6f1a8fb714ae1493b224b8e91aebf09
tdreszer
  Mon Jul 30 12:17:38 2012 -0700
Making final pass through tree of checkins as dictated by Jim. None of these changes should affect executables in any way. This pass is due to expanding fingerprint caused by kompare.
diff --git src/inc/cheapcgi.h src/inc/cheapcgi.h
index e45cce1..413320a 100644
--- src/inc/cheapcgi.h
+++ src/inc/cheapcgi.h
@@ -1,505 +1,506 @@
 /*****************************************************************************
  * Copyright (C) 2000 Jim Kent.  This source code may be freely used         *
  * for personal, academic, and non-profit purposes.  Commercial use          *
  * permitted only by explicit agreement with Jim Kent (jim_kent@pacbell.net) *
  *****************************************************************************/
 /* Cheapcgi.h - turns variables passed from the web form into
  * something that C understands. */
 
 #ifndef CHEAPCGI_H
 #define CHEAPCGI_H
 
 #ifndef DYSTRING_H
 #include "dystring.h"
 #endif
 
 #ifndef HASH_H
 #include "hash.h"
 #endif
 
 #define COLOR_BG_DEFAULT         "#FFFEE8"
 #define COLOR_BG_ALTDEFAULT      "#FFF9D2"
 #define COLOR_BG_DEFAULT_DARKER  "#FCECC0"
 #define COLOR_BG_DEFAULT_DARKEST "#EED5B7"
 #define COLOR_BG_GHOST           "#EEEEEE"
 #define COLOR_BG_PALE            "#F8F8F8"
 #define COLOR_BG_HEADER_LTBLUE   "#D9E4F8"
 #define COLOR_DARKGREEN          "#008800"
 #define COLOR_LTGREEN            "#CCFFCC"
 #define COLOR_DARKBLUE           "#000088"
 #define COLOR_BLUE_BUTTON        "#91B3E6"
 #define COLOR_DARKGREY           "#666666"
 #define COLOR_LTGREY             "#CCCCCC"
 #define COLOR_YELLOW             "#FFFF00"
 #define COLOR_LTYELLOW           "#FFF380"
 #define COLOR_WHITE              "#FFFFFF"
 #define COLOR_RED                "#AA0000"
 #define COLOR_TRACKLIST_LEVEL1   COLOR_BG_DEFAULT
 #define COLOR_TRACKLIST_LEVEL2   COLOR_BG_ALTDEFAULT
 #define COLOR_TRACKLIST_LEVEL3   COLOR_BG_DEFAULT_DARKER
 #define COLOR_TRACKLIST_LEVEL4   COLOR_BG_DEFAULT_DARKEST
 
 void initSigHandlers(boolean dumpStack);
 /* set handler for various terminal signals for logging purposes.
  * if dumpStack is TRUE, attempt to dump the stack. */
 
 struct cgiVar
 /* Info on one cgi variable. */
     {
     struct cgiVar *next;	/* Next in list. */
     char *name;			/* Name - allocated in hash. */
     char *val;  		/* Value - also not allocated here. */
     boolean saved;		/* True if saved. */
     };
 
 struct cgiVar* cgiVarList();
 /* return the list of cgiVar's */
 
 char *findCookieData(char *varName);
 /* Get the string associated with varName from the cookie string. */
 
 void dumpCookieList();
 /* Print out the cookie list. */
 
 boolean cgiIsOnWeb();
 /* Return TRUE if looks like we're being run as a CGI. */
 
 char *cgiRequestMethod();
 /* Return CGI REQUEST_METHOD (such as 'GET/POST/PUT/DELETE/HEAD') */
 
 char *cgiRequestUri();
 /* Return CGI REQUEST_URI */
 
 char *cgiRequestContentLength();
 /* Return HTTP REQUEST CONTENT_LENGTH if available*/
 
 char *cgiScriptName();
 /* Return name of script so libs can do context-sensitive stuff. */
 
 char *cgiServerName();
 /* Return name of server, better to use cgiServerNamePort() for
    actual URL construction */
 
 char *cgiServerPort();
 /* Return port number of server */
 
 char *cgiServerNamePort();
 /* Return name of server with port if different than 80 */
 
 char *cgiRemoteAddr();
 /* Return IP address of client (or "unknown"). */
 
 char *cgiUserAgent();
 /* Return remote user agent (HTTP_USER_AGENT) or NULL if remote user agent is not known */
 
 enum browserType
 /* How to look at a track. */
     {
     btUnknown=0, // Not yet known
     btOpera=1,   // Opera
     btIE=2,      // MS Internet Explorer
     btFF=3,      // Firefox
     btChrome=4,  // Google Chrome
     btSafari=5,  // Safari
     btOther=6    // Anything else
     };
 
 enum osType
 /* How to look at a track. */
     {
     osUnknown=0, // Not yet known
     osWindows=1, // The evil empire
     osLinux=2,   // Workhorse
     osMac=3,     // ashion or Religion
     osOther=4    // Anything else
     };
 
 enum browserType cgiClientBrowser(char **browserQualifier, enum osType *clientOs, 
                                   char **clientOsQualifier);
 /* These routines abort the html output if the input isn't
  * there or is misformatted. */
 #define cgiBrowser() cgiClientBrowser(NULL,NULL,NULL)
 
 char *cgiString(char *varName);
 int cgiInt(char *varName);
 double cgiDouble(char *varName);
 
 boolean cgiBoolean(char *varName);
 /* The cgiBoolean is a little problematic.  If the variable
  * is TRUE it exists, but if it is false it is simply not
  * defined.   cgiBoolean() thus returns FALSE if the CGI
  * variable doesn't exist or if it is set to FALSE.  To
  * work around this when need be use cgiBooleanDefined(),
  * which relies on the fact that when we define a boolean
  * variable we also define a hidden variable. */
 
 boolean cgiBooleanDefined(char *name);
 /* Return TRUE if boolean variable is defined (by
  * checking for shadow). */
 
 char *cgiBooleanShadowPrefix();
 /* Prefix for shadow variable set with boolean variables. */
 
 void cgiMakeHiddenBoolean(char *name, boolean on);
 /* Make hidden boolean variable. Also make a shadow hidden variable so we
  * can distinguish between variable not present and
  * variable set to false. */
 
 char *cgiMultListShadowPrefix();
 /* Prefix for shadow variable set with multi-select inputs. */
 
 int cgiIntExp(char *varName);
 /* Evaluate an integer expression in varName and
  * return value. */
 
 char *cgiOptionalString(char *varName);
 /* Return value of string if it exists in cgi environment, else NULL */
 
 char *cgiUsualString(char *varName, char *usual);
 /* Return value of string if it exists in cgi environment.
  * Otherwiser return 'usual' */
 
 struct slName *cgiStringList(char *varName);
 /* Find list of cgi variables with given name.  This
  * may be empty.  Free result with slFreeList(). */
 
 int cgiOptionalInt(char *varName, int defaultVal);
 /* This returns value of varName if it exists in cgi environment,
  * otherwise it returns defaultVal. */
 
 double cgiOptionalDouble(char *varName, double defaultVal);
 /* Returns double value. */
 
 #define cgiUsualInt cgiOptionalInt
 #define cgiUsualDouble cgiOptionalDouble
 
 struct cgiChoice
 /* Choice table */
     {
     char *name;
     int value;
     };
 
 int cgiOneChoice(char *varName, struct cgiChoice *choices, int choiceSize);
 /* Returns value associated with string variable in choice table. */
 
 boolean cgiVarExists(char *varName);
 /* Returns TRUE if the variable was passed in. */
 
 void cgiBadVar(char *varName);
 /* Complain about a variable that's not there. */
 
 void cgiDecode(char *in, char *out, int inLength);
 /* Decode from cgi pluses-for-spaces format to normal.
  * Out will be a little shorter than in typically. */
 
 char *cgiEncode(char *inString);
 /* Return a cgi-encoded version of inString.
  * Alphanumerics kept as is, space translated to plus,
  * and all other characters translated to %hexVal.
  * You can free return value with freeMem(). */
 
 char *cgiEncodeFull(char *inString);
 /* Return a cgi-encoded version of inString (no + for space!).
  * Alphanumerics/./_ kept as is and all other characters translated to
  * %hexVal. */
 
 void cgiMakeButtonWithMsg(char *name, char *value, char *msg);
 /* Make 'submit' type button. Display msg on mouseover, if present*/
 
 void cgiMakeButtonWithOnClick(char *name, char *value, char *msg, char *onClick);
 /* Make 'submit' type button, with onclick javascript */
 
 void cgiMakeButton(char *name, char *value);
 /* Make 'submit' type button. */
 
 void cgiMakeOnClickButton(char *command, char *value);
 /* Make 'push' type button with client side onClick (java)script. */
 
 void cgiMakeOnClickSubmitButton(char *command, char *name, char *value);
 /* Make submit button with both variable name and value with client side
  * onClick (java)script. */
 
 void cgiMakeOptionalButton(char *name, char *value, boolean disabled);
 /* Make 'submit' type button that can be disabled. */
 
 void cgiMakeRadioButton(char *name, char *value, boolean checked);
 /* Make radio type button.  A group of radio buttons should have the
  * same name but different values.   The default selection should be
  * sent with checked on. */
 
 void cgiMakeOnClickRadioButton(char *name, char *value, boolean checked,
                                         char *command);
 /* Make radio type button with onClick command.
  *  A group of radio buttons should have the
  * same name but different values.   The default selection should be
  * sent with checked on. */
 
 void cgiMakeCheckBoxUtil(char *name, boolean checked, char *msg, char *id);
 /* Make check box - can be called directly, though it was originally meant
  * as the common code for all lower level checkbox routines.
  * However, it's util functionality has been taken over by
  * cgiMakeCheckBoxWithIdAndOptionalHtml() */
 
 void cgiMakeCheckBox(char *name, boolean checked);
 /* Make check box. */
 
 void cgiMakeCheckBoxWithMsg(char *name, boolean checked, char *msg);
 /* Make check box, which includes a msg. */
 
 void cgiMakeCheckBoxWithId(char *name, boolean checked, char *id);
 /* Make check box, which includes an ID. */
 
 void cgiMakeCheckBoxJS(char *name, boolean checked, char *javascript);
 /* Make check box with javascript */
 
 void cgiMakeCheckBoxIdAndJS(char *name, boolean checked, char *id, char *javascript);
 /* Make check box with ID and javascript. */
 
 void cgiMakeCheckBoxFourWay(char *name, boolean checked, boolean enabled, char *id, 
                             char *classes, char *moreHtml);
 /* Make check box - with fourWay functionality (checked/unchecked by enabled/disabled
  * Also makes a shadow hidden variable that supports the 2 boolean states. */
 
 void cgiMakeTextArea(char *varName, char *initialVal, int rowCount, int columnCount);
 /* Make a text area with area rowCount X columnCount and with text: intialVal. */
 
 void cgiMakeTextAreaDisableable(char *varName, char *initialVal, int rowCount, int columnCount, boolean disabled);
 /* Make a text area that can be disabled. The rea has rowCount X
  * columnCount and with text: intialVal */
 
 void cgiMakeTextVar(char *varName, char *initialVal, int charSize);
 /* Make a text control filled with initial value.  If charSize
  * is zero it's calculated from initialVal size. */
 
 void cgiMakeTextVarWithExtraHtml(char *varName, char *initialVal, int width, char *extra);
 /* Make a text control filled with initial value. */
 
 void cgiMakeOnKeypressTextVar(char *varName, char *initialVal, int charSize,
 			      char *script);
 /* Make a text control filled with initial value, with a (java)script
  * to execute every time a key is pressed.  If charSize is zero it's
  * calculated from initialVal size. */
 
 void cgiMakeIntVar(char *varName, int initialVal, int maxDigits);
 /* Make a text control filled with initial integer value.  */
 
 #define NO_VALUE            -96669
 void cgiMakeIntVarInRange(char *varName, int initialVal, char *title, int width, 
                           char *min, char *max);
 /* Make a integer control filled with initial value.
    If min and/or max are non-NULL will enforce range
    Requires utils.js jQuery.js and inputBox class */
 void cgiMakeIntVarWithLimits(char *varName, int initialVal, char *title, int width, 
                              int min, int max);
 void cgiMakeIntVarWithMin(char *varName, int initialVal, char *title, int width, int min);
 void cgiMakeIntVarWithMax(char *varName, int initialVal, char *title, int width, int max);
 #define cgiMakeIntVarNoLimits(varName,initialVal,title,width) \
         cgiMakeIntVarInRange(varName,initialVal,title,width,NULL,NULL)
 /* All four of these call cgiMakeIntVarInRange() and therefore require utils.js */
 
 void cgiMakeDoubleVar(char *varName, double initialVal, int maxDigits);
 /* Make a text control filled with initial floating-point value.  */
 
 void cgiMakeDoubleVarInRange(char *varName, double initialVal, char *title, int width, 
                              char *min, char *max);
 /* Make a floating point control filled with initial value.
    If min and/or max are non-NULL will enforce range
    Requires utils.js jQuery.js and inputBox class */
 void cgiMakeDoubleVarWithLimits(char *varName, double initialVal, char *title, int width, 
                                 double min, double max);
 void cgiMakeDoubleVarWithMin(char *varName, double initialVal, char *title, int width, double min);
 void cgiMakeDoubleVarWithMax(char *varName, double initialVal, char *title, int width, double max);
 #define cgiMakeDoubleVarNoLimits(varName,initialVal,title,width) \
         cgiMakeDoubleVarInRange(varName,initialVal,title,width,NULL,NULL)
 /* All four of these call cgiMakeDoubleVarInRange() and therefore require utils.js */
 
 void cgiMakeDropListClass(char *name, char *menu[], int menuSize, char *checked, char *class);
 /* Make a drop-down list with names and style sheet class. */
 
 void cgiMakeDropList(char *name, char *menu[], int menuSize, char *checked);
 /* Make a drop-down list with names.
  * uses style "normalText" */
 
 void cgiMakeDropListClassWithStyleAndJavascript(char *name, char *menu[],
-    int menuSize, char *checked, char *class, char *style,char *javascript);
+                                                int menuSize, char *checked, char *class,
+                                                char *style,char *javascript);
 /* Make a drop-down list with names, text class, style and javascript. */
 
 void cgiMakeDropListClassWithStyle(char *name, char *menu[],
 	int menuSize, char *checked, char *class, char *style);
 /* Make a drop-down list with names, text class and style. */
 
 void cgiMakeDropListWithVals(char *name, char *menu[], char *values[],
                          int menuSize, char *checked);
 /* Make a drop-down list with names and values. In this case checked
  * corresponds to a value, not a menu. */
 
 void cgiMakeDropListFull(char *name, char *menu[], char *values[], int menuSize, char *checked, char *extraAttribs);
 /* Make a drop-down list with names and values. */
 
 void cgiDropDownWithTextValsAndExtra(char *name, char *text[], char *values[],
     int count, char *selected, char *extra);
 /* Make a drop-down list with both text and values. */
 
 char *cgiMakeSelectDropList(boolean multiple, char *name, struct slPair *valsAndLabels,
                             char *selected, char *anyAll,char *extraClasses, char *extraHtml);
 // Returns allocated string of HTML defining a drop-down select
 // (if multiple, REQUIRES ui-dropdownchecklist.js)
 // valsAndLabels: val (pair->name) must be filled in but label (pair->val) may be NULL.
 // selected: if not NULL is a val found in the valsAndLabels (multiple then comma delimited list).
 //           If null and anyAll not NULL, that will be selected
 // anyAll: if not NULL is the string for an initial option. It can contain val and label,
 //         delimited by a comma
 // extraHtml: if not NULL contains id, javascript calls and style.
 //            It does NOT contain class definitions
 #define cgiMakeMultiSelectDropList(name,valsAndLabels,selected,anyAll,extraClasses,extraHtml) \
         cgiMakeSelectDropList(TRUE,(name),(valsAndLabels),(selected),(anyAll),\
                               (extraClasses),(extraHtml))
 #define cgiMakeSingleSelectDropList(name,valsAndLabels,selected,anyAll,extraClasses,extraHtml) \
         cgiMakeSelectDropList(FALSE,(name),(valsAndLabels),(selected),(anyAll),\
                               (extraClasses),(extraHtml))
 
 void cgiMakeMultList(char *name, char *menu[], int menuSize, struct slName *checked, int length);
 /* Make a list of names which can have multiple selections.
  * Same as drop-down list except "multiple" is added to select tag */
 
 void cgiMakeCheckboxGroup(char *name, char *menu[], int menuSize, struct slName *checked,
 			  int tableColumns);
 /* Make a table of checkboxes that have the same variable name but different
  * values (same behavior as a multi-select input). */
 
 void cgiMakeCheckboxGroupWithVals(char *name, char *menu[], char *values[], int menuSize,
 				  struct slName *checked, int tableColumns);
 /* Make a table of checkboxes that have the same variable name but different
  * values (same behavior as a multi-select input), with nice labels in menu[]. */
 
 void cgiMakeHiddenVarWithExtra(char *varName, char *string, char *extra);
 /* Store string in hidden input for next time around. */
 
 #define cgiMakeHiddenVar(name,val) cgiMakeHiddenVarWithExtra((name),(val),NULL)
 /* Store string in hidden input for next time around. */
 
 void cgiContinueHiddenVar(char *varName);
 /* Write CGI var back to hidden input for next time around.
  * (if it exists). */
 
 void cgiContinueAllVars();
 /* Write back all CGI vars as hidden input for next time around. */
 
 void cgiVarExclude(char *varName);
 /* If varName exists, remove it. */
 
 void cgiVarExcludeExcept(char **varNames);
 /* Exclude all variables except for those in NULL
  * terminated array varNames.  varNames may be NULL
  * in which case nothing is excluded. */
 
 void cgiVarSet(char *varName, char *val);
 /* Set a cgi variable to a particular value. */
 
 struct dyString *cgiUrlString();
 /* Get URL-formatted that expresses current CGI variable state. */
 
 boolean cgiSpoof(int *pArgc, char *argv[]);
 /* Use the command line to set up things as if we were a CGI program.
  * User types in command line (assuming your program called cgiScript)
  * like:
  *        cgiScript nonCgiArg1 var1=value1 var2=value2 var3=value3 nonCgiArg2
  * or like
  *        cgiScript nonCgiArg1 var1=value1&var2=value2&var3=value3 nonCgiArg2
  * (The non-cgi arguments can occur anywhere.  The cgi arguments (all containing
  * the character '=') are erased from argc/argv.  Normally you call this
  *        cgiSpoof(&argc, argv);
  */
 
 boolean cgiFromCommandLine(int *pArgc, char *argv[], boolean preferWeb);
 /* Use the command line to set up things as if we were a CGI program.
  * If preferWeb is TRUE will choose real CGI variables over command
  * line ones. */
 
 void useTempFile();
 /* tell cheapcgi to use temp files */
 
 boolean cgiFromFile(char *fileName);
 /* Set up a cgi environment using parameters stored in a file.
  * Takes file with arguments in the form:
  *       argument1=someVal
  *       # This is a comment
  *       argument2=someOtherVal
  *       ...
  * and puts them into the cgi environment so that the usual
  * cgiGetVar() commands can be used. Useful when a program
  * has a lot of possible parameters.
  */
 
 boolean cgiParseInput(char *input, struct hash **retHash,
 	struct cgiVar **retList);
 /* Parse cgi-style input into a hash table and list.  This will alter
  * the input data.  The hash table will contain references back
  * into input, so please don't free input until you're done with
  * the hash. Prints message and returns FALSE if there's an error.*/
 
 void cgiSimpleTableStart();
 /* start HTML table  -- no customization. Leaves room
  * for a fancier implementation */
 
 void cgiTableEnd();
 /* end HTML table */
 
 void cgiMakeSubmitButton();
 /* Make 'submit' type button. */
 
 void cgiMakeResetButton();
 /* Make 'reset' type button. */
 
 void cgiMakeClearButton(char *form, char *field);
 /* Make button to clear a text field. */
 
 void cgiMakeFileEntry(char *name);
 /* Make file entry box/browser */
 
 void cgiSimpleTableRowStart();
 /* Start table row */
 
 void cgiTableRowEnd();
 /* End table row */
 
 void cgiSimpleTableFieldStart();
 /* Start table field */
 
 void cgiTableFieldStartAlignRight();
 /* Start table field */
 
 void cgiTableFieldEnd();
 /* End table field */
 
 void cgiTableField(char *text);
 /* Make table field entry */
 
 void cgiTableFieldWithMsg(char *text, char *msg);
 /* Make table field entry with mouseover */
 
 void cgiParagraph(char *text);
 /* Make text paragraph */
 
 void logCgiToStderr();
 /* Log useful CGI info to stderr */
 
 void cgiResetState();
 /* This is for reloading CGI settings multiple times in the same program
  * execution.  No effect if state has not yet been initialized. */
 
 void cgiDown(float lines);
 // Drop down a certain number of lines (may be fractional)
 
 char *commonCssStyles();
 /* Returns a string of common CSS styles */
 
 char *javaScriptLiteralEncode(char *inString);
 /* Use backslash escaping on newline
  * and quote chars, backslash and others.
  * Intended that the encoded string will be
  * put between quotes at a higher level and
  * then interpreted by Javascript. */
 
 #endif /* CHEAPCGI_H */