void SendCompleted(bool success, const string& serverResponse) { if (success) { if (AddSubmittedReport(serverResponse)) { DeleteDump(); } else { string directory = gReporterDumpFile; int slashpos = directory.find_last_of("/\\"); if (slashpos < 2) return; directory.resize(slashpos); UIPruneSavedDumps(directory); WriteSubmissionEvent(Failed, ""); } } else { WriteSubmissionEvent(Failed, ""); } }
static afs_int32 ScanForChildren(afs_int32 aparentID) { DIR *tdir; register struct dirent *tde; afs_int32 dumpID, parent; register FILE *tfile; register afs_int32 code; afs_int32 j2, j3, j4; char dname[256]; char dumpName[1024]; tdir = opendir(AFSDIR_SERVER_BACKUP_DIRPATH); if (!tdir) return -1; for (tde = readdir(tdir); tde; tde = readdir(tdir)) { code = sscanf(tde->d_name, "D%ld.db", (long int *) &dumpID); if (code != 1) continue; tfile = OpenDump(dumpID, "r"); if (!tfile) continue; /* shouldn't happen, but should continue anyway */ code = ScanDumpHdr(tfile, dname, dumpName, &parent, &j2, &j3, &j4); fclose(tfile); if (code) { printf("backup:dsstub: bad dump header for dump %d\n", dumpID); continue; } /* if this guy's parent is the ID we're scanning for, delete it */ if (aparentID == parent) { code = DeleteDump(dumpID); if (code) printf("backup:dsstub: failed to delete child dump %d\n", dumpID); } } closedir(tdir); return 0; }