IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38752


Ignore:
Timestamp:
Sep 17, 2015, 8:26:20 PM (11 years ago)
Author:
eugene
Message:

add a suffice to dvo_catalog_backup

Location:
branches/eam_branches/ipp-20150625/Ohana/src/libdvo
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/include/dvo.h

    r38667 r38752  
    970970void dvo_catalog_test (Catalog *catalog, int halt);
    971971
    972 int dvo_catalog_backup (Catalog *catalog, int primary);
    973 int dvo_catalog_unlink_backup (Catalog *catalog, int primary);
     972int dvo_catalog_backup (Catalog *catalog, char *suffix, int primary);
     973int dvo_catalog_unlink_backup (Catalog *catalog, char *suffix, int primary);
    974974
    975975/* catmode-specific APIs */
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dvo_catalog.c

    r38643 r38752  
    10451045
    10461046// make a backup of this catalog (including the measure, secfilt, and missing tables as needed)
    1047 int dvo_catalog_backup (Catalog *catalog, int primary) {
     1047int dvo_catalog_backup (Catalog *catalog, char *suffix, int primary) {
    10481048
    10491049  // skip empty cpt files
     
    10531053
    10541054  char tmpfilename[DVO_MAX_PATH];
    1055   int status = snprintf (tmpfilename, DVO_MAX_PATH, "%s~", catalog->filename);
     1055  int status = snprintf (tmpfilename, DVO_MAX_PATH, "%s%s", catalog->filename, suffix);
    10561056  if (status >= DVO_MAX_PATH) {
    10571057    fprintf (stderr, "path name too long: %s\n", catalog->filename);
     
    10681068  }
    10691069
     1070  // play it safe: do not overwrite an existing backup file
     1071  struct stat fileStats;
     1072  status = stat (tmpfilename, &fileStats);
     1073  if (!status) {
     1074    fprintf (stderr, "ERROR: backup file %s already exists, exiting\n", tmpfilename);
     1075    return FALSE;
     1076  }
     1077 
     1078  // some error accessing the file.  there is only one acceptable error: file not found
     1079  if (status && (errno != ENOENT)) {
     1080    perror ("problem with output target");
     1081    return FALSE;
     1082  }
     1083
    10701084  status = rename (catalog->filename, tmpfilename);
    10711085  if (status) {
     
    10861100  if (catalog[0].catmode == DVO_MODE_SPLIT) {
    10871101    if (catalog[0].measure_catalog != NULL) {
    1088       if (!dvo_catalog_backup (catalog[0].measure_catalog, FALSE)) {
     1102      if (!dvo_catalog_backup (catalog[0].measure_catalog, suffix, FALSE)) {
    10891103        return FALSE;
    10901104      }
    10911105    }
    10921106    if (catalog[0].missing_catalog != NULL) {
    1093       if (!dvo_catalog_backup (catalog[0].missing_catalog, FALSE)) {
     1107      if (!dvo_catalog_backup (catalog[0].missing_catalog, suffix, FALSE)) {
    10941108        return FALSE;
    10951109      }
    10961110    }
    10971111    if (catalog[0].secfilt_catalog != NULL) {
    1098       if (!dvo_catalog_backup (catalog[0].secfilt_catalog, FALSE)) {
     1112      if (!dvo_catalog_backup (catalog[0].secfilt_catalog, suffix, FALSE)) {
    10991113        return FALSE;
    11001114      }
     
    11051119        status = dvo_catalog_lock (catalog[0].lensing_catalog, lockmode);
    11061120      } else {
    1107         if (!dvo_catalog_backup (catalog[0].lensing_catalog, FALSE)) {
     1121        if (!dvo_catalog_backup (catalog[0].lensing_catalog, suffix, FALSE)) {
    11081122          return FALSE;
    11091123        }
     
    11151129        status = dvo_catalog_lock (catalog[0].lensobj_catalog, lockmode);
    11161130      } else {
    1117         if (!dvo_catalog_backup (catalog[0].lensobj_catalog, FALSE)) {
     1131        if (!dvo_catalog_backup (catalog[0].lensobj_catalog, suffix, FALSE)) {
    11181132          return FALSE;
    11191133        }
     
    11251139        status = dvo_catalog_lock (catalog[0].starpar_catalog, lockmode);
    11261140      } else {
    1127         if (!dvo_catalog_backup (catalog[0].starpar_catalog, FALSE)) {
     1141        if (!dvo_catalog_backup (catalog[0].starpar_catalog, suffix, FALSE)) {
    11281142          return FALSE;
    11291143        }
     
    11351149        status = dvo_catalog_lock (catalog[0].galphot_catalog, lockmode);
    11361150      } else {
    1137         if (!dvo_catalog_backup (catalog[0].galphot_catalog, FALSE)) {
     1151        if (!dvo_catalog_backup (catalog[0].galphot_catalog, suffix, FALSE)) {
    11381152          return FALSE;
    11391153        }
     
    11451159
    11461160// make a backup of this catalog (including the measure, secfilt, and missing tables as needed)
    1147 int dvo_catalog_unlink_backup (Catalog *catalog, int primary) {
     1161int dvo_catalog_unlink_backup (Catalog *catalog, char *suffix, int primary) {
    11481162
    11491163  if (primary && !catalog->Naverage_disk) {
     
    11531167
    11541168  char tmpfilename[DVO_MAX_PATH];
    1155   int status = snprintf (tmpfilename, DVO_MAX_PATH, "%s~", catalog->filename);
     1169  int status = snprintf (tmpfilename, DVO_MAX_PATH, "%s%s", catalog->filename, suffix);
    11561170  if (status >= DVO_MAX_PATH) {
    11571171    fprintf (stderr, "path name too long: %s\n", catalog->filename);
     
    11691183  if (catalog[0].catmode == DVO_MODE_SPLIT) {
    11701184    if (catalog[0].measure_catalog != NULL) {
    1171       if (!dvo_catalog_unlink_backup (catalog[0].measure_catalog, FALSE)) {
     1185      if (!dvo_catalog_unlink_backup (catalog[0].measure_catalog, suffix, FALSE)) {
    11721186        outStatus = FALSE;
    11731187      }
    11741188    }
    11751189    if (catalog[0].missing_catalog != NULL) {
    1176       if (!dvo_catalog_unlink_backup (catalog[0].missing_catalog, FALSE)) {
     1190      if (!dvo_catalog_unlink_backup (catalog[0].missing_catalog, suffix, FALSE)) {
    11771191        outStatus = FALSE;
    11781192      }
    11791193    }
    11801194    if (catalog[0].secfilt_catalog != NULL) {
    1181       if (!dvo_catalog_unlink_backup (catalog[0].secfilt_catalog, FALSE)) {
     1195      if (!dvo_catalog_unlink_backup (catalog[0].secfilt_catalog, suffix, FALSE)) {
    11821196        outStatus = FALSE;
    11831197      }
    11841198    }
    11851199    if ((catalog[0].lensing_catalog != NULL) && (catalog[0].Nlensing_disk > 0)) {
    1186       if (!dvo_catalog_unlink_backup (catalog[0].lensing_catalog, FALSE)) {
     1200      if (!dvo_catalog_unlink_backup (catalog[0].lensing_catalog, suffix, FALSE)) {
    11871201        outStatus = FALSE;
    11881202      }
    11891203    }
    11901204    if ((catalog[0].lensobj_catalog != NULL) && (catalog[0].Nlensobj_disk > 0)) {
    1191       if (!dvo_catalog_unlink_backup (catalog[0].lensobj_catalog, FALSE)) {
     1205      if (!dvo_catalog_unlink_backup (catalog[0].lensobj_catalog, suffix, FALSE)) {
    11921206        outStatus = FALSE;
    11931207      }
    11941208    }
    11951209    if ((catalog[0].starpar_catalog != NULL) && (catalog[0].Nstarpar_disk > 0)) {
    1196       if (!dvo_catalog_unlink_backup (catalog[0].starpar_catalog, FALSE)) {
     1210      if (!dvo_catalog_unlink_backup (catalog[0].starpar_catalog, suffix, FALSE)) {
    11971211        outStatus = FALSE;
    11981212      }
    11991213    }
    12001214    if ((catalog[0].galphot_catalog != NULL) && (catalog[0].Ngalphot_disk > 0)) {
    1201       if (!dvo_catalog_unlink_backup (catalog[0].galphot_catalog, FALSE)) {
     1215      if (!dvo_catalog_unlink_backup (catalog[0].galphot_catalog, suffix, FALSE)) {
    12021216        outStatus = FALSE;
    12031217      }
Note: See TracChangeset for help on using the changeset viewer.