Index: trunk/Ohana/src/libdvo/src/skyregion_io.c
===================================================================
--- trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 5849)
+++ trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 5900)
@@ -90,39 +90,38 @@
   int status;
 
-  /* first option: catdir/SkyTable.fits */
+  /* first option: CATDIR/SkyTable.fits */
+  sprintf (filename, "%s/SkyTable.fits", catdir);
+  if (stat (filename, &filestat)) goto SKYFILE;
+  if (!check_file_access (filename, FALSE, verbose)) goto SKYFILE;
+  sky = SkyTableLoad (filename, verbose);
+  if (sky == NULL) {
+    fprintf (stderr, "error loading sky table\n");
+    exit (1);
+  }
+  return (sky);
+
+SKYFILE:
+  /* second option: SKYFILE */
+  if (skyfile == NULL) goto GSCFILE;
+  if (skyfile[0] != 0) goto GSCFILE;
+  if (stat (skyfile, &filestat)) goto GSCFILE;
+  if (!check_file_access (skyfile, FALSE, verbose)) goto GSCFILE;
+  sky = SkyTableLoad (skyfile, verbose);
+  if (sky == NULL) {
+    fprintf (stderr, "error loading sky table\n");
+    exit (1);
+  }
+  /* set the depths to the default depth */
+  SkyTableSetDepth (sky, depth);
+
+  /* create CATDIR copy */
   sprintf (filename, "%s/SkyTable.fits", catdir);
   check_file_access (filename, FALSE, verbose);
+  SkyTableSave (sky, filename);
+  fits_convert_SkyRegion (sky[0].regions, sizeof (SkyTable), sky[0].Nregions);
+  return (sky);
 
-  /* check for file existence */
-  status = stat (filename, &filestat);
-  if (status == 0) { /* file exists, are permissions OK? */
-    sky = SkyTableLoad (filename, verbose);
-    if (sky == NULL) {
-      fprintf (stderr, "error loading sky table\n");
-      exit (1);
-    }
-    return (sky);
-  }
-
-  /* first option: SKY_TABLE */
-  if ((skyfile != NULL) && (skyfile[0] != 0)) {
-    status = stat (skyfile, &filestat);
-    if (status == 0) { /* file exists, are permissions OK? */
-      sky = SkyTableLoad (skyfile, verbose);
-      if (sky == NULL) {
-	fprintf (stderr, "error loading sky table\n");
-	exit (1);
-      }
-      SkyTableSetDepth (sky, depth);
-
-      /* write CATDIR copy */
-      sprintf (filename, "%s/SkyTable.fits", catdir);
-      check_file_access (filename, FALSE, verbose);
-      SkyTableSave (sky, filename);
-      fits_convert_SkyRegion (sky[0].regions, sizeof (SkyTable), sky[0].Nregions);
-      return (sky);
-    }
-  }
-
+GSCFILE:
+  /* third option: GSCFILE */
   sky = SkyTableFromGSC (gscfile, depth, verbose);
   if (sky == NULL) {
@@ -131,10 +130,9 @@
   }
 
-  /* write CATDIR copy */
+  /* create CATDIR copy */
   sprintf (filename, "%s/SkyTable.fits", catdir);
   check_file_access (filename, FALSE, verbose);
   SkyTableSave (sky, filename);
   fits_convert_SkyRegion (sky[0].regions, sizeof (SkyRegion), sky[0].Nregions);
-
   return (sky);
 }
