* University of Maryland at College Park
*/
/*
- * $Id: reporter.c,v 1.132 2006/08/28 17:02:48 martinea Exp $
+ * $Id: reporter.c,v 1.132.2.1 2007/01/26 13:12:43 martinea Exp $
*
* nightly Amanda Report generator
*/
/* don't have (or need) a skipped type except internally to reporter */
#define L_SKIPPED L_MARKER
+
+#define STATUS_STRANGE 2
+#define STATUS_FAILED 4
+#define STATUS_MISSING 8
+#define STATUS_TAPE 16
+
typedef struct line_s {
struct line_s *next;
char *str;
/* count files to tape */
static int tapefcount = 0;
+static int exit_status = 0;
static char *run_datestamp;
static char *tape_labels = NULL;
static int last_run_tapes = 0;
}
dbclose();
- return 0;
+ return exit_status;
}
/* ----- */
fprintf(mailf, "%s\n",
tmp=TextRule(OrigKB, TapeRate, "FAILED"));
amfree(tmp);
+ exit_status |= STATUS_FAILED;
continue;
}
if(dp == NULL) {
addtostrange(hostname, diskname, level,
"ERROR [not in disklist]");
+ exit_status |= STATUS_FAILED;
amfree(hostname);
amfree(diskname);
amfree(datestamp);
tapestart_error = newstralloc(tapestart_error, s - 1);
if(nl) *nl = '\n';
degraded_mode = 1;
+ exit_status |= STATUS_TAPE;;
return;
}
/* else some other tape error, handle like other errors */
dp = lookup_disk(hostname, diskname);
if(dp == NULL) {
addtostrange(hostname, qdiskname, level, "ERROR [not in disklist]");
+ exit_status |= STATUS_FAILED;
amfree(hostname);
amfree(diskname);
amfree(datestamp);
str = vstralloc("STRANGE", " ", strangestr, NULL);
addtostrange(repdata->disk->host->hostname, qdisk, repdata->level, str);
+ exit_status |= STATUS_STRANGE;
amfree(qdisk);
amfree(str);
amfree(strangestr);
addline(&errdet, curstr);
}
addline(&errdet,"\\--------");
+ exit_status |= STATUS_FAILED;
}
return;
}
if(dp->todo && data(dp) == NULL) {
qdisk = quote_string(dp->name);
addtostrange(dp->host->hostname, qdisk, -987, "RESULTS MISSING");
+ exit_status |= STATUS_MISSING;
amfree(qdisk);
}
}