Index: trunk/psphot/src/psphotParseCamera.c
===================================================================
--- trunk/psphot/src/psphotParseCamera.c	(revision 11230)
+++ trunk/psphot/src/psphotParseCamera.c	(revision 11263)
@@ -13,4 +13,13 @@
     }
 
+    // if we have requested PSPHOT.SRC, attempt to resolve it 
+    if (psMetadataLookupPtr(NULL, config->arguments, "SRC")) { 
+	pmFPAfileDefineFromArgs (&status, config, "PSPHOT.SRC", "SRC");
+	if (!status) {
+	    psError(PSPHOT_ERR_CONFIG, false, "Failed to find/build PSPHOT.SRC");
+	    return status;
+	}
+    }
+
     // select recipe options supplied on command line
     psMetadata *recipe  = psMetadataLookupPtr (&status, config->recipes, PSPHOT_RECIPE);
@@ -18,13 +27,9 @@
     // if MASK or WEIGHT was supplied on command line, bind files to input fpa
     // XXX these do not quite yet work: pmFPAAddSourceFromHeader is not appropriate
-    pmFPAfileBindFromArgs (NULL, input, config, "INPUT.MASK", "MASK");
-    pmFPAfileBindFromArgs (NULL, input, config, "INPUT.WEIGHT", "WEIGHT");
+    pmFPAfileBindFromArgs (NULL, input, config, "PSPHOT.MASK", "MASK");
+    pmFPAfileBindFromArgs (NULL, input, config, "PSPHOT.WEIGHT", "WEIGHT");
 
     // optionally load the PSF Model and/or fixed stars
-    pmFPAfileBindFromArgs (NULL, input, config, "INPUT.PSF", "PSF");
-    pmFPAfile *srcInput = pmFPAfileDefineFromArgs (NULL, config, "INPUT.SRC", "SRC");
-    if (!srcInput) {
-	fprintf (stderr, "!");
-    }
+    pmFPAfileBindFromArgs (NULL, input, config, "PSPHOT.PSF", "PSF");
 
     // set default recipe values here
@@ -47,5 +52,5 @@
     if (!status || saveOutput) {
 	if (!pmFPAfileDefineOutput (config, input->fpa, "PSPHOT.OUTPUT")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.OUTPUT");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.OUTPUT");
 	    return false;
 	}
@@ -55,5 +60,5 @@
     if (psMetadataLookupBool(NULL, recipe, "SAVE.RESID")) {
 	if (!pmFPAfileDefineOutput (config, input->fpa, "PSPHOT.RESID")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.BACKMDL");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.BACKMDL");
 	    return false;
 	}
@@ -68,5 +73,5 @@
     if (psMetadataLookupBool(NULL, recipe, "SAVE.BACKMDL")) {
 	if (!pmFPAfileDefineFromFPA (config, input->fpa, DX, DY, "PSPHOT.BACKMDL")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.BACKMDL");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.BACKMDL");
 	    return false;
 	}
@@ -75,5 +80,5 @@
     if (psMetadataLookupBool(NULL, recipe, "SAVE.BACKGND")) {
 	if (!pmFPAfileDefineFromFPA (config, input->fpa,  1,  1, "PSPHOT.BACKGND")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.BACKGND");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.BACKGND");
 	    return false;
 	}
@@ -82,5 +87,5 @@
     if (psMetadataLookupBool(NULL, recipe, "SAVE.BACKSUB")) {
 	if (!pmFPAfileDefineFromFPA (config, input->fpa,  1,  1, "PSPHOT.BACKSUB")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.");
 	    return false;
 	}
@@ -89,5 +94,5 @@
     if (psMetadataLookupBool(NULL, recipe, "SAVE.PSF")) {
 	if (!pmFPAfileDefineOutput (config, input->fpa, "PSPHOT.PSF.SAVE")) {
-	    psError(PS_ERR_IO, false, "Cannot find a rule for PSPHOT.PSF.SAVE");
+	    psError(PSPHOT_ERR_CONFIG, false, "Cannot find a rule for PSPHOT.PSF.SAVE");
 	    return false;
 	}
@@ -115,5 +120,5 @@
 	    int chipNum = atoi(chips->data[i]);
 	    if (! pmFPASelectChip(input->fpa, chipNum, false)) {
-		psError(PS_ERR_IO, false, "Chip number %d doesn't exist in camera.\n", chipNum);
+		psError(PSPHOT_ERR_CONFIG, false, "Chip number %d doesn't exist in camera.\n", chipNum);
 		return false;
 	    }
@@ -121,9 +126,7 @@
     }
     psFree (chips);
-
     psTrace("psphot", 1, "Done with psphotParseCamera...\n");
 
     psErrorClear();			// some metadata lookup may have failed
-
     return true;
 }
