Index: /trunk/psModules/src/config/pmConfig.c
===================================================================
--- /trunk/psModules/src/config/pmConfig.c	(revision 12905)
+++ /trunk/psModules/src/config/pmConfig.c	(revision 12906)
@@ -4,6 +4,6 @@
  *  @author EAM (IfA)
  *
- *  @version $Revision: 1.87 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-18 22:20:28 $
+ *  @version $Revision: 1.88 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-18 22:42:33 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -62,11 +62,7 @@
     psFree(config->arguments);
     psFree(config->database);
-    for (int i = 0; i < argc; i++) {
-	psFree (config->argv[i]);
-    }
-    psFree (config->argv);
-}
-
-pmConfig *pmConfigAlloc(int argc, char **argv)
+}
+
+pmConfig *pmConfigAlloc()
 {
     pmConfig *config = psAlloc(sizeof(pmConfig));
@@ -86,10 +82,4 @@
     config->defaultRecipe = NULL;
 
-    config->argc = argc;
-    config->argv = (char *)psAlloc (argc*sizeof(char *));
-    for (int i = 0; i < argc; i++) {
-	config->argv[i] = psStringCopy(argv[i]);
-    }
-
     // the file structure is used to carry pmFPAfiles
     config->files = psMetadataAlloc ();
@@ -310,5 +300,5 @@
     PS_ASSERT_PTR_NON_NULL(argv, NULL);
 
-    pmConfig *config = pmConfigAlloc(argc, argv); // The configuration, containing site, camera and recipes
+    pmConfig *config = pmConfigAlloc(); // The configuration, containing site, camera and recipes
     config->defaultRecipe = defaultRecipe;
 
@@ -322,5 +312,5 @@
     // First, try command line
     //
-    psS32 argNum = psArgumentGet(*config->argc, config->argv, "-site");
+    psS32 argNum = psArgumentGet(*argc, argv, "-site");
     if (argNum != 0) {
         //
@@ -329,11 +319,11 @@
         // remove it as well.
         //
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-site command-line switch provided without the required filename --- ignored.\n");
         } else {
-            siteName = psStringCopy(config->argv[argNum]);
-            psArgumentRemove(argNum, config->argc, config->argv);
+            siteName = psStringCopy(argv[argNum]);
+            psArgumentRemove(argNum, argc, argv);
         }
     }
@@ -397,17 +387,17 @@
         }
 
-        argNum = psArgumentGet(*config->argc, config->argv, "-log");
+        argNum = psArgumentGet(*argc, argv, "-log");
         if (argNum > 0)
         {
-            psArgumentRemove(argNum, config->argc, config->argv);
-            if (argNum >= *config->argc) {
+            psArgumentRemove(argNum, argc, argv);
+            if (argNum >= *argc) {
                 psLogMsg("psModules.config", PS_LOG_WARN, "-log command-line switch provided without the "
                          "required log destination --- ignored.\n");
             } else {
-                if (!psLogSetDestination(psMessageDestination(config->argv[argNum]))) {
+                if (!psLogSetDestination(psMessageDestination(argv[argNum]))) {
                     psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n",
-                             config->argv[argNum]);
+                             argv[argNum]);
                 }
-                psArgumentRemove(argNum, config->argc, config->argv);
+                psArgumentRemove(argNum, argc, argv);
             }
         } else
@@ -420,5 +410,5 @@
                 if (!psLogSetDestination(psMessageDestination(logDest))) {
                     psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n",
-                             config->argv[argNum]);
+                             argv[argNum]);
                 }
             }
@@ -472,5 +462,5 @@
         //   B: will the pmConfigRead function always be called on initialization.
         //
-        psArgumentVerbosity(config->argc, config->argv);
+        psArgumentVerbosity(argc, argv);
         // XXX: substitute the string for the default log level for "2".
     }
@@ -498,13 +488,13 @@
     // file is read and parsed into psMetadata struct "camera".
     //
-    argNum = psArgumentGet(*config->argc, config->argv, "-camera");
+    argNum = psArgumentGet(*argc, argv, "-camera");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-camera command-line switch provided without the required camera or filename --- "
                      "ignored.\n");
         } else {
-            char *cameraFile = config->argv[argNum]; // The camera configuration file to read
+            char *cameraFile = argv[argNum]; // The camera configuration file to read
 
             // look for a symbolic camera name in the CAMERAS metadata
@@ -525,5 +515,5 @@
 
             pmConfigFileRead(&config->camera, cameraFile, "camera");
-            psArgumentRemove(argNum, config->argc, config->argv);
+            psArgumentRemove(argNum, argc, argv);
 
             // Read in the formats
@@ -600,12 +590,12 @@
 
     // check for values that override DB* keywords
-    argNum = psArgumentGet(*config->argc, config->argv, "-dbserver");
+    argNum = psArgumentGet(*argc, argv, "-dbserver");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-dbserver command-line switch provided without the required server name --- ");
         } else {
-            char *dbserver = config->argv[argNum]; // The camera configuration file to read
+            char *dbserver = argv[argNum]; // The camera configuration file to read
             if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBSERVER", PS_META_REPLACE, NULL, dbserver)) {
                 psLogMsg("psModules.config", PS_LOG_WARN,
@@ -613,16 +603,16 @@
             }
 
-            psArgumentRemove(argNum, config->argc, config->argv);
-        }
-    }
-
-    argNum = psArgumentGet(*config->argc, config->argv, "-dbname");
+            psArgumentRemove(argNum, argc, argv);
+        }
+    }
+
+    argNum = psArgumentGet(*argc, argv, "-dbname");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-dbname command-line switch provided without the required database name --- ");
         } else {
-            char *dbname = config->argv[argNum]; // The camera configuration file to read
+            char *dbname = argv[argNum]; // The camera configuration file to read
             if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBNAME", PS_META_REPLACE, NULL, dbname)) {
                 psLogMsg("psModules.config", PS_LOG_WARN,
@@ -630,16 +620,16 @@
             }
 
-            psArgumentRemove(argNum, config->argc, config->argv);
-        }
-    }
-
-    argNum = psArgumentGet(*config->argc, config->argv, "-dbuser");
+            psArgumentRemove(argNum, argc, argv);
+        }
+    }
+
+    argNum = psArgumentGet(*argc, argv, "-dbuser");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-dbuser command-line switch provided without the required database name --- ");
         } else {
-            char *dbuser = config->argv[argNum]; // The camera configuration file to read
+            char *dbuser = argv[argNum]; // The camera configuration file to read
             if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBUSER", PS_META_REPLACE, NULL, dbuser)) {
                 psLogMsg("psModules.config", PS_LOG_WARN,
@@ -647,16 +637,16 @@
             }
 
-            psArgumentRemove(argNum, config->argc, config->argv);
-        }
-    }
-
-    argNum = psArgumentGet(*config->argc, config->argv, "-dbpassword");
+            psArgumentRemove(argNum, argc, argv);
+        }
+    }
+
+    argNum = psArgumentGet(*argc, argv, "-dbpassword");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-dbpassword command-line switch provided without the required password --- ");
         } else {
-            char *dbpassword = config->argv[argNum]; // The camera configuration file to read
+            char *dbpassword = argv[argNum]; // The camera configuration file to read
             if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBPASSWORD", PS_META_REPLACE, NULL, dbpassword)) {
                 psLogMsg("psModules.config", PS_LOG_WARN,
@@ -664,16 +654,16 @@
             }
 
-            psArgumentRemove(argNum, config->argc, config->argv);
-        }
-    }
-
-    argNum = psArgumentGet(*config->argc, config->argv, "-dbport");
+            psArgumentRemove(argNum, argc, argv);
+        }
+    }
+
+    argNum = psArgumentGet(*argc, argv, "-dbport");
     if (argNum > 0) {
-        psArgumentRemove(argNum, config->argc, config->argv);
-        if (argNum >= *config->argc) {
+        psArgumentRemove(argNum, argc, argv);
+        if (argNum >= *argc) {
             psLogMsg("psModules.config", PS_LOG_WARN,
                      "-dbpport command-line switch provided without the required port number --- ");
         } else {
-            char *dbport = config->argv[argNum]; // The camera configuration file to read
+            char *dbport = argv[argNum]; // The camera configuration file to read
             if (!psMetadataAddS32(config->site, PS_LIST_TAIL, "DBPORT", PS_META_REPLACE, NULL, (psS32)atoi(dbport))) {
                 psLogMsg("psModules.config", PS_LOG_WARN,
@@ -681,5 +671,5 @@
             }
 
-            psArgumentRemove(argNum, config->argc, config->argv);
+            psArgumentRemove(argNum, argc, argv);
         }
     }
@@ -975,10 +965,9 @@
 }
 
-psArray *pmConfigFileSets(pmConfig *config, const char *file, const char *list)
-{
-    PS_ASSERT_PTR_NON_NULL(config, NULL);
-    PS_ASSERT_PTR_NON_NULL(config->argc, NULL);
-    PS_ASSERT_INT_NONNEGATIVE(*config->argc, NULL);
-    PS_ASSERT_PTR_NON_NULL(config->argv, NULL);
+psArray *pmConfigFileSets(int *argc, char **argv, const char *file, const char *list)
+{
+    PS_ASSERT_PTR_NON_NULL(argc, NULL);
+    PS_ASSERT_INT_NONNEGATIVE(*argc, NULL);
+    PS_ASSERT_PTR_NON_NULL(argv, NULL);
     PS_ASSERT_STRING_NON_EMPTY(file, NULL);
     PS_ASSERT_STRING_NON_EMPTY(list, NULL);
@@ -992,10 +981,10 @@
     // maybe a comma-separated list of words
     // each word may be a glob: "file*.fits"
-    if ((Narg = psArgumentGet (*config->argc, config->argv, file))) {
+    if ((Narg = psArgumentGet (*argc, argv, file))) {
 
         // select the word after 'file' and split by comma
-        psArgumentRemove (Narg, config->argc, config->argv);
-        psArray *words = psStringSplitArray (config->argv[Narg], ",", true);
-        psArgumentRemove (Narg, config->argc, config->argv);
+        psArgumentRemove (Narg, argc, argv);
+        psArray *words = psStringSplitArray (argv[Narg], ",", true);
+        psArgumentRemove (Narg, argc, argv);
 
         // parse the word as a glob
@@ -1021,5 +1010,5 @@
 
     // load the list from the supplied text file
-    if ((Narg = psArgumentGet (*config->argc, config->argv, list))) {
+    if ((Narg = psArgumentGet (*argc, argv, list))) {
         int nItems;
         char line[1024]; // XXX limits the list lines to 1024 chars
@@ -1027,6 +1016,6 @@
         char *filename;
 
-        psArgumentRemove (Narg, config->argc, config->argv);
-        FILE *f = fopen (config->argv[Narg], "r");
+        psArgumentRemove (Narg, argc, argv);
+        FILE *f = fopen (argv[Narg], "r");
         if (f == NULL) {
             psAbort("unable to open specified list file");
@@ -1048,5 +1037,5 @@
             }
         }
-        psArgumentRemove (Narg, config->argc, config->argv);
+        psArgumentRemove (Narg, argc, argv);
     }
 
@@ -1054,9 +1043,8 @@
 }
 
-bool pmConfigFileSetsMD(psMetadata *metadata, pmConfig *config, const char *name,
+bool pmConfigFileSetsMD(psMetadata *metadata, int *argc, char **argv, const char *name,
                         const char *file, const char *list)
 {
     PS_ASSERT_PTR_NON_NULL(metadata, false);
-    PS_ASSERT_PTR_NON_NULL(config, false);
     PS_ASSERT_STRING_NON_EMPTY(name, NULL);
     PS_ASSERT_STRING_NON_EMPTY(file, NULL);
@@ -1065,5 +1053,5 @@
     psErrorClear();   // pmConfigFileSets may or may not call psError, so
     // if files->n == 0 we'll want to call psError(..., false, ...)
-    psArray *files = pmConfigFileSets(config, file, list);
+    psArray *files = pmConfigFileSets(argc, argv, file, list);
     if (files->n == 0) {
         // psError(PS_ERR_IO, false, "pmConfigFileSets failed to find %s in the argument list", name);
Index: /trunk/psModules/src/config/pmConfig.h
===================================================================
--- /trunk/psModules/src/config/pmConfig.h	(revision 12905)
+++ /trunk/psModules/src/config/pmConfig.h	(revision 12906)
@@ -5,6 +5,6 @@
  *  @author Eugene Magnier, IfA
  * 
- *  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-03 20:28:26 $
+ *  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-18 22:42:33 $
  *  Copyright 2005-2006 Institute for Astronomy, University of Hawaii
  */
@@ -47,10 +47,14 @@
     psMetadata *files;                  ///< pmFPAfiles used for analysis
     psDB *database;                     ///< Database handle
-    int *argc;                          ///< Number of command-line arguments
-    char **argv;                        ///< Command-line arguments (raw version)
     const char *defaultRecipe;          ///< name of top-level recipe for this program
     // Private members
     pmRecipeSource recipesRead;         ///< Which recipe sources have been read
     psMetadata *recipeSymbols;          ///< Where each recipe came from
+
+    // dropping the argc, argv info from pmConfig
+    # if (0)
+    int *argc;                          ///< Number of command-line arguments
+    char **argv;                        ///< Command-line arguments (raw version)
+    # endif 
 }
 pmConfig;
