Index: /trunk/psModules/src/astrom/pmConceptsRead.c
===================================================================
--- /trunk/psModules/src/astrom/pmConceptsRead.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmConceptsRead.c	(revision 7016)
@@ -216,5 +216,5 @@
                 if (mdok && strlen(keywords) > 0) {
                     // In case there are multiple headers
-                    psList *keys = psStringSplit(keywords, " ,;"); // List of keywords
+                    psList *keys = psStringSplit(keywords, " ,;", true); // List of keywords
                     if (keys->n == 1) {
                         // Only one key --- proceed as usual
@@ -285,6 +285,6 @@
                 // Now, need to get the "given"s
                 if (strlen(givenCols) > 0 || strlen(givenPS) > 0) {
-                    psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-                    psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+                    psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+                    psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
                     psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
                     if (cols->n != values->n) {
@@ -516,6 +516,6 @@
         // Now, need to get the "given"s
         if (strlen(givenCols) || strlen(givenPS)) {
-            psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-            psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+            psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+            psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
             psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
             if (cols->n != values->n) {
Index: /trunk/psModules/src/astrom/pmConceptsStandard.c
===================================================================
--- /trunk/psModules/src/astrom/pmConceptsStandard.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmConceptsStandard.c	(revision 7016)
@@ -177,5 +177,5 @@
     switch (concept->type) {
     case PS_DATA_STRING: {
-            psList *regions = psStringSplit(concept->data.V, " ;"); // List of regions
+            psList *regions = psStringSplit(concept->data.V, " ;", true); // List of regions
             psListIterator *regionsIter = psListIteratorAlloc(regions, PS_LIST_HEAD, false); // Iterator
             psString regionString = NULL; // Region string from iteration
@@ -569,5 +569,5 @@
         // We're working with two separate headers --- construct a list with the date and time separately
         psString dateTimeString = psTimeToISO(time); // String representation
-        psList *dateTime = psStringSplit(dateTimeString, "T");
+        psList *dateTime = psStringSplit(dateTimeString, "T", true);
         psFree(dateTimeString);
         psString dateString = psListGet(dateTime, PS_LIST_HEAD); // The date string
Index: /trunk/psModules/src/astrom/pmConceptsWrite.c
===================================================================
--- /trunk/psModules/src/astrom/pmConceptsWrite.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmConceptsWrite.c	(revision 7016)
@@ -35,5 +35,5 @@
         switch (standard->type) {
         case PS_DATA_STRING:
-            sList = psStringSplit(standard->data.V, " ;");
+            sList = psStringSplit(standard->data.V, " ;", true);
             break;
         case PS_DATA_LIST:
@@ -173,5 +173,5 @@
             return false;
         }
-        psList *keys = psStringSplit(keywords, " ,;"); // List of keywords
+        psList *keys = psStringSplit(keywords, " ,;", true); // List of keywords
         if (keys->n != values->n) {
             psLogMsg(__func__, PS_LOG_WARN, "Number of keywords (%d) does not match number of values (%d).\n",
@@ -363,5 +363,5 @@
                     continue;
                 }
-                psList *keywords = psStringSplit(headerItem->data.V, " ,;"); // List of header keywords
+                psList *keywords = psStringSplit(headerItem->data.V, " ,;", true); // List of header keywords
                 if (formatted->type == PS_DATA_LIST) {
                     psList *values = formatted->data.V; // The values for the headers
@@ -448,6 +448,6 @@
                 // Now, need to get the "given"s
                 if (strlen(givenCols) || strlen(givenPS)) {
-                    psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-                    psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+                    psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+                    psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
                     psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
                     if (cols->n != values->n) {
@@ -708,6 +708,6 @@
         // Now, need to get the "given"s
         if (strlen(givenCols) || strlen(givenPS)) {
-            psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-            psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+            psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+            psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
             psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
             if (cols->n != values->n) {
Index: /trunk/psModules/src/astrom/pmFPAConceptsGet.c
===================================================================
--- /trunk/psModules/src/astrom/pmFPAConceptsGet.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmFPAConceptsGet.c	(revision 7016)
@@ -163,6 +163,6 @@
         // Now, need to get the "given"s
         if (strlen(givenCols) || strlen(givenPS)) {
-            psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-            psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+            psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+            psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
             psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
             if (cols->n != values->n) {
@@ -723,5 +723,5 @@
                 psString source = sourceItem->data.V; // The source string
 
-                psList *secList = psStringSplit(sections, " ;"); // List of sections
+                psList *secList = psStringSplit(sections, " ;", true); // List of sections
                 psListIterator *secIter = psListIteratorAlloc(secList, PS_LIST_HEAD, false); // Iterator over
                 // sections
Index: /trunk/psModules/src/astrom/pmFPAConceptsSet.c
===================================================================
--- /trunk/psModules/src/astrom/pmFPAConceptsSet.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmFPAConceptsSet.c	(revision 7016)
@@ -249,6 +249,6 @@
         // Now, need to get the "given"s
         if (strlen(givenCols) || strlen(givenPS)) {
-            psList *cols = psStringSplit(givenCols, ",;"); // List of column names
-            psList *values = psStringSplit(givenPS, ",;"); // List of value names for the columns
+            psList *cols = psStringSplit(givenCols, ",;", true); // List of column names
+            psList *values = psStringSplit(givenPS, ",;", true); // List of value names for the columns
             psMetadata *selection = psMetadataAlloc(); // The stuff to select in the DB
             if (cols->n != values->n) {
@@ -617,5 +617,5 @@
                 // Check that it's the same value as stored in the camera
                 psString checkString = psMetadataLookupStr(NULL, cell->camera, "CELL.BIASSEC");
-                psList *checkList = psStringSplit(checkString, " ;");
+                psList *checkList = psStringSplit(checkString, " ;", true);
                 if (biassecs->n != checkList->n) {
                     psError(PS_ERR_IO, true, "Target CELL.BIASSEC is specified by value, but number of "
@@ -663,5 +663,5 @@
             } else if (strcasecmp(source, "HEADER") == 0) {
                 psString keywordsString = psMetadataLookupStr(NULL, cell->camera, "CELL.BIASSEC");
-                psList *keywords = psStringSplit(keywordsString, " ,;");
+                psList *keywords = psStringSplit(keywordsString, " ,;", true);
                 if (biassecs->n != keywords->n) {
                     psError(PS_ERR_IO, true, "Target CELL.BIASSEC is sepcified by headers, but the number "
@@ -825,9 +825,9 @@
                     psMetadata *translation = psMetadataLookupMD(NULL, camera, "TRANSLATION");
                     psString keywords = psMetadataLookupStr(NULL, translation, "CELL.TIME");
-                    psList *dateTimeKeywords = psStringSplit(keywords, " ,;");
+                    psList *dateTimeKeywords = psStringSplit(keywords, " ,;", true);
                     psString dateKeyword = psListGet(dateTimeKeywords, PS_LIST_HEAD);
                     psString timeKeyword = psListGet(dateTimeKeywords, PS_LIST_TAIL);
 
-                    psList *dateTime = psStringSplit(dateTimeString, " T"); // Find the middle T
+                    psList *dateTime = psStringSplit(dateTimeString, " T", true); // Find the middle T
                     psString dateString = psListGet(dateTime, PS_LIST_HEAD);
                     psString timeString = psListGet(dateTime, PS_LIST_TAIL);
Index: /trunk/psModules/src/astrom/pmFPAConstruct.c
===================================================================
--- /trunk/psModules/src/astrom/pmFPAConstruct.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmFPAConstruct.c	(revision 7016)
@@ -43,5 +43,5 @@
 {
     bool allOK = true;                  // Everything was OK?
-    psList *values = psStringSplit(string, " ,;"); // List of the parts
+    psList *values = psStringSplit(string, " ,;", true); // List of the parts
     *first = psArrayAlloc(values->n);
     *second = psArrayAlloc(values->n);
@@ -52,5 +52,5 @@
     psString value = NULL;               // "first:second:third" string
     while ((value = psListGetAndIncrement(valuesIter))) {
-        psList *firstSecondThird = psStringSplit(value, ":"); // List containing the first, second, third
+        psList *firstSecondThird = psStringSplit(value, ":", true); // List containing the first, second, third
         psArray *fst = psListToArray(firstSecondThird); // An array representation
         psFree(firstSecondThird);
@@ -194,5 +194,5 @@
     }
 
-    psList *keywords = psStringSplit(contentHeaders, " ,;"); // List of keywords
+    psList *keywords = psStringSplit(contentHeaders, " ,;", true); // List of keywords
     psListIterator *keywordsIter = psListIteratorAlloc(keywords, PS_LIST_HEAD, false); // Iterator
     psString keyword = NULL;        // Keyword, from iteration
@@ -377,5 +377,5 @@
 
         pmChip *chip = pmChipAlloc(fpa, chipName); // The chip
-        psList *cellNames = psStringSplit(componentsItem->data.V, " ,;"); // List of cell names
+        psList *cellNames = psStringSplit(componentsItem->data.V, " ,;", true); // List of cell names
         psListIterator *cellNamesIter = psListIteratorAlloc(cellNames, PS_LIST_HEAD, false); // Iterator
 
Index: /trunk/psModules/src/astrom/pmFPA_JPEG.c
===================================================================
--- /trunk/psModules/src/astrom/pmFPA_JPEG.c	(revision 7015)
+++ /trunk/psModules/src/astrom/pmFPA_JPEG.c	(revision 7016)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-17 18:01:04 $
+ *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-05-01 01:08:45 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -123,5 +123,5 @@
         mode = pmFPAfileNameFromRule (file->extrule, file, view);
         word = pmFPAfileNameFromRule (file->extxtra, file, view);
-        range = psStringSplitArray (word, ":");
+        range = psStringSplitArray (word, ":", false);
 
         // XXX we need to decide where the scale will come from in the long term
Index: /trunk/psModules/src/config/pmConfig.c
===================================================================
--- /trunk/psModules/src/config/pmConfig.c	(revision 7015)
+++ /trunk/psModules/src/config/pmConfig.c	(revision 7016)
@@ -3,6 +3,6 @@
  *  @author PAP, IfA
  *
- *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-22 03:20:16 $
+ *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-05-01 01:08:45 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -219,5 +219,5 @@
     char *path = psMetadataLookupStr(NULL, config->site, "PATH");
     if (path) {
-        psList *list = psStringSplit(path, ":");
+        psList *list = psStringSplit(path, ":", false);
         configPath = psListToArray(list);
         psFree(list);
Index: /trunk/psModules/src/objects/pmSourceIO_CMP.c
===================================================================
--- /trunk/psModules/src/objects/pmSourceIO_CMP.c	(revision 7015)
+++ /trunk/psModules/src/objects/pmSourceIO_CMP.c	(revision 7016)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-30 22:08:33 $
+ *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-05-01 01:08:45 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -215,6 +215,5 @@
             psString line = psStringNCopy (&buffer[j*BYTES_STAR], BYTES_STAR);
 
-            // XXX this is failing on lines where there are multiple spaces in a row
-            psList *list = psStringSplit (line, " ");
+            psList *list = psStringSplit (line, " ", false);
             psArray *array = psListToArray (list);
 
Index: /trunk/psModules/src/pslib/psAdditionals.c
===================================================================
--- /trunk/psModules/src/pslib/psAdditionals.c	(revision 7015)
+++ /trunk/psModules/src/pslib/psAdditionals.c	(revision 7016)
@@ -16,8 +16,8 @@
 }
 
-psArray *psStringSplitArray (const char *string, const char *splitters)
+psArray *psStringSplitArray (const char *string, const char *splitters, bool multi)
 {
 
-    psList *list = psStringSplit (string, splitters);
+    psList *list = psStringSplit (string, splitters, multi);
     psArray *array = psListToArray (list);
     psFree (list);
Index: /trunk/psModules/src/pslib/psAdditionals.h
===================================================================
--- /trunk/psModules/src/pslib/psAdditionals.h	(revision 7015)
+++ /trunk/psModules/src/pslib/psAdditionals.h	(revision 7016)
@@ -15,6 +15,6 @@
 // Split string on given characters
 psArray *psStringSplitArray(const char *string, // String to split
-                            const char *splitters // Characters on which to split
-                           );
+                            const char *splitters, // Characters on which to split
+                            bool multipleAreSignificant);
 
 // strip whitespace from head and tail of string
