Index: /branches/eam_branches/ipp-20140610/Ohana/src/libohana/include/ohana.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libohana/include/ohana.h	(revision 36941)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libohana/include/ohana.h	(revision 36942)
@@ -252,8 +252,13 @@
 int     scan_line              PROTO((FILE *f, char *line)); 
 int     scan_line_maxlen       PROTO((FILE *f, char *line, int maxlen)); 
+char   *parse_nextword         PROTO((char *string));
+char   *parse_nextword_csv     PROTO((char *string));
 int     dparse                 PROTO((double *X, int NX, char *line));
 int     dparse_csv             PROTO((double *X, int NX, char *line));
 int     iparse                 PROTO((int *X, int NX, char *line));
 int     iparse_csv             PROTO((int *X, int NX, char *line));
+int     charparse_csv          PROTO((char *X, int NX, char *line));
+char   *ptrparse               PROTO((int NX, char *line));
+char   *ptrparse_csv           PROTO((int NX, char *line));
 int     charparse_csv          PROTO((char *X, int NX, char *line));
 int     charparse              PROTO((char *X, int NX, char *line));
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libohana/src/string.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libohana/src/string.c	(revision 36941)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libohana/src/string.c	(revision 36942)
@@ -167,5 +167,5 @@
 }
 
-char *_parse_nextword (char *string) {
+char *parse_nextword (char *string) {
 
   if (string == (char *) NULL) return ((char *) NULL);
@@ -182,5 +182,5 @@
 // ,,, : go from , to , to , to 0
 
-char *_parse_nextword_csv (char *string) {
+char *parse_nextword_csv (char *string) {
 
   if (string == (char *) NULL) return ((char *) NULL);
@@ -199,5 +199,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword (word);
+    word = parse_nextword (word);
 
   *X = strtod (word, &ptr);
@@ -215,5 +215,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword_csv (word);
+    word = parse_nextword_csv (word);
   
   if (word[0] == '"') word[0] = ' ';
@@ -237,5 +237,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword (word);
+    word = parse_nextword (word);
 
   *X = strtol (word, &ptr, 0);
@@ -253,5 +253,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword_csv (word);
+    word = parse_nextword_csv (word);
   
   if (word[0] == '"') word[0] = ' ';
@@ -274,5 +274,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword (word);
+    word = parse_nextword (word);
 
   *X = word[0];
@@ -287,5 +287,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword_csv (word);
+    word = parse_nextword_csv (word);
   
   if (word[0] == '"') word[0] = word[1];
@@ -299,4 +299,31 @@
 }
 
+// return a pointer to the start of the desired field
+char *ptrparse (int NX, char *line) {
+
+  int i;
+  char *word;
+
+  word = line;
+  for (i = 0; i < NX - 1; i++) {
+    word = parse_nextword (word);
+  }
+  return word;
+}
+
+char *ptrparse_csv (int NX, char *line) {
+
+  int i;
+  char *word;
+
+  word = line;
+  for (i = 0; i < NX - 1; i++)
+    word = parse_nextword_csv (word);
+  
+  if (word[0] == '"') word ++;
+  if (word[0] == ',') return NULL;
+  return word;
+}
+
 int tparse (time_t *X, int NX, char *line) {
 
@@ -306,5 +333,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword (word);
+    word = parse_nextword (word);
 
   status = ohana_str_to_time (word, X);
@@ -320,5 +347,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword_csv (word);
+    word = parse_nextword_csv (word);
   
   if (word[0] == '"') word[0] = ' ';
@@ -341,5 +368,5 @@
   word = line;
   for (i = 0; i < NX - 1; i++)
-    word = _parse_nextword (word);
+    word = parse_nextword (word);
 
   *X = strtod (word, &ptr);
