27b594bfa5877caa686411a1ae1c7abef6e841ef
kent
  Fri Jan 30 14:11:12 2015 -0800
Implementing a raNextTagValWithIndent function.

diff --git src/inc/ra.h src/inc/ra.h
index 96d38bc..4e5a021 100644
--- src/inc/ra.h
+++ src/inc/ra.h
@@ -21,35 +21,47 @@
 // order.  Will ignore '#' comments and joins continued lines (ending in '\').
 #define raNextRecordAsSlPairList(lf)  raNextStanzAsPairs(lf)
 
 struct slPair *raNextStanzaLinesAndUntouched(struct lineFile *lf);
 // Return list of lines starting from current position, up through last line of next stanza.
 // May return a few blank/comment lines at end with no real stanza.
 // Will join continuation lines, allocating memory as needed.
 // returns pairs with name=joined line and if joined,
 // val will contain raw lines '\'s and linefeeds, else val will be NULL.
 
 boolean raSkipLeadingEmptyLines(struct lineFile *lf, struct dyString *dy);
 /* Skip leading empty lines and comments.  Returns FALSE at end of file.
  * Together with raNextTagVal you can construct your own raNextRecord....
  * If dy parameter is non-null, then the text parsed gets placed into dy. */
 
-boolean raNextTagVal(struct lineFile *lf, char **retTag, char **retVal, struct dyString  *dy);
+boolean raNextTagValWithIndent(struct lineFile *lf, char **retTag, char **retVal, struct dyString  *dy,
+	int *retIndent);
+// Read next line.  Return FALSE at end of file or blank line.  Otherwise fill in
+// *retTag and *retVal and *retIndent and return TRUE.  If dy parameter is non-null, then 
+// the text parsed gets appended to dy. Continuation lines in RA file will be joined to produce 
+// tag and val, but dy will be filled with the unedited multiple lines containing the continuation chars.
+// NOTE: retTag & retVal, if returned, point to static mem which will be overwritten on next call!
+
+INLINE boolean raNextTagVal(struct lineFile *lf, char **retTag, char **retVal, struct dyString  *dy)
 // Read next line.  Return FALSE at end of file or blank line.  Otherwise fill in
 // *retTag and *retVal and return TRUE.  If dy parameter is non-null, then the text parsed
 // gets appended to dy. Continuation lines in RA file will be joined to produce tag and val,
 // but dy will be filled with the unedited multiple lines containing the continuation chars.
+// NOTE: retTag & retVal, if returned, point to static mem which will be overwritten on next call!
+{
+return raNextTagValWithIndent(lf, retTag, retVal, dy, NULL);
+}
 
 struct hash *raFromString(char *string);
 /* Return hash of key/value pairs from string.
  * As above freeHash this when done. */
 
 boolean raFoldInOne(struct lineFile *lf, struct hash *hashOfHash);
 /* Fold in one record from ra file into hashOfHash.
  * This will add ra's and ra fields to whatever already
  * exists in the hashOfHash,  overriding fields of the
  * same name if they exist already. */
 
 void raFoldIn(char *fileName, struct hash *hashOfHash);
 /* Read ra's in file name and fold them into hashOfHash.
  * This will add ra's and ra fields to whatever already
  * exists in the hashOfHash,  overriding fields of the