X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=server-src%2Famtape.c;h=72dcf17125de2fa3d960bbc72163e08bf9f72c16;hb=refs%2Ftags%2Fupstream%2F2.5.1;hp=c52cfdd5f7044ceebf2d285de052530caba23d46;hpb=94c03cae686e4196a345d72452fda2a5203768ce;p=debian%2Famanda diff --git a/server-src/amtape.c b/server-src/amtape.c index c52cfdd..72dcf17 100644 --- a/server-src/amtape.c +++ b/server-src/amtape.c @@ -24,7 +24,7 @@ * file named AUTHORS, in the root directory of this distribution. */ /* - * $Id: amtape.c,v 1.40.2.1 2006/04/14 11:32:07 martinea Exp $ + * $Id: amtape.c,v 1.47 2006/07/25 18:27:57 martinea Exp $ * * tape changer interface program */ @@ -38,28 +38,28 @@ #include "version.h" /* local functions */ -void usage P((void)); -int main P((int argc, char **argv)); -void reset_changer P((int argc, char **argv)); -void eject_tape P((int argc, char **argv)); -void clean_tape P((int argc, char **argv)); -void load_slot P((int argc, char **argv)); -void load_label P((int argc, char **argv)); -void show_slots P((int argc, char **argv)); -void show_current P((int argc, char **argv)); -void update_labeldb P((int argc, char **argv)); -void amtape_taper_scan P((int argc, char **argv)); -void show_device P((int argc, char **argv)); -int update_one_slot P((void *ud, int rc, char *slotstr, char *device)); -int loadlabel_slot P((void *ud, int rc, char *slotstr, char *device)); -int show_init P((void *ud, int rc, int ns, int bk, int s)); -int show_init_all P((void *ud, int rc, int ns, int bk, int s)); -int show_init_current P((void *ud, int rc, int ns, int bk, int s)); -int show_slot P((void *ud, int rc, char *slotstr, char *device)); +void usage(void); +int main(int argc, char **argv); +void reset_changer(int argc, char **argv); +void eject_tape(int argc, char **argv); +void clean_tape(int argc, char **argv); +void load_slot(int argc, char **argv); +void load_label(int argc, char **argv); +void show_slots(int argc, char **argv); +void show_current(int argc, char **argv); +void update_labeldb (int argc, char **argv); +void amtape_taper_scan(int argc, char **argv); +void show_device(int argc, char **argv); +int update_one_slot (void *ud, int rc, char *slotstr, char *device); +int loadlabel_slot(void *ud, int rc, char *slotstr, char *device); +int show_init(void *ud, int rc, int ns, int bk, int s); +int show_init_all(void *ud, int rc, int ns, int bk, int s); +int show_init_current(void *ud, int rc, int ns, int bk, int s); +int show_slot(void *ud, int rc, char *slotstr, char *device); static const struct { const char *name; - void (*fn) P((int, char **)); + void (*fn)(int, char **); const char *usage; } cmdtab[] = { { "reset", reset_changer, @@ -95,9 +95,10 @@ static const struct { { "update", update_labeldb, "update update the label matchingdatabase"}, }; -#define NCMDS (sizeof(cmdtab) / sizeof(cmdtab[0])) +#define NCMDS (int)(sizeof(cmdtab) / sizeof(cmdtab[0])) -void usage() +void +usage(void) { int i; @@ -108,9 +109,10 @@ void usage() exit(1); } -int main(argc, argv) -int argc; -char **argv; +int +main( + int argc, + char ** argv) { char *conffile; char *conf_tapelist; @@ -132,6 +134,8 @@ char **argv; /* Don't die when child closes pipe */ signal(SIGPIPE, SIG_IGN); + dbopen(DBG_SUBDIR_SERVER); + malloc_size_1 = malloc_inuse(&malloc_hist_1); erroutput_type = ERR_INTERACTIVE; @@ -144,8 +148,11 @@ char **argv; conffile = stralloc2(config_dir, CONFFILE_NAME); if (read_conffile(conffile)) { error("errors processing config file \"%s\"", conffile); + /*NOTREACHED*/ } + dbrename(config_name, DBG_SUBDIR_SERVER); + conf_tapelist = getconf_str(CNF_TAPELIST); if (*conf_tapelist == '/') { conf_tapelist = stralloc(conf_tapelist); @@ -154,6 +161,7 @@ char **argv; } if (read_tapelist(conf_tapelist)) { error("could not load tapelist \"%s\"", conf_tapelist); + /*NOTREACHED*/ } amfree(conf_tapelist); @@ -163,23 +171,25 @@ char **argv; if ((pw = getpwnam(dumpuser)) == NULL) { error("cannot look up dump user \"%s\"", dumpuser); - /* NOTREACHED */ + /*NOTREACHED*/ } uid_dumpuser = pw->pw_uid; if ((pw = getpwuid(uid_me)) == NULL) { error("cannot look up my own uid %ld", (long)uid_me); - /* NOTREACHED */ + /*NOTREACHED*/ } if (uid_me != uid_dumpuser) { error("running as user \"%s\" instead of \"%s\"", pw->pw_name, dumpuser); - /* NOTREACHED */ + /*NOTREACHED*/ } if((have_changer = changer_init()) == 0) { error("no tpchanger specified in \"%s\"", conffile); + /*NOTREACHED*/ } else if (have_changer != 1) { error("changer initialization failed: %s", strerror(errno)); + /*NOTREACHED*/ } /* switch on command name */ @@ -205,17 +215,22 @@ char **argv; malloc_list(fileno(stderr), malloc_hist_1, malloc_hist_2); } + dbclose(); return 0; } /* ---------------------------- */ -void reset_changer(argc, argv) -int argc; -char **argv; +void +reset_changer( + int argc, + char ** argv) { char *slotstr = NULL; + (void)argc; /* Quiet unused parameter warning */ + (void)argv; /* Quiet unused parameter warning */ + switch(changer_reset(&slotstr)) { case 0: fprintf(stderr, "%s: changer is reset, slot %s is loaded.\n", @@ -227,18 +242,23 @@ char **argv; break; default: error("could not reset changer: %s", changer_resultstr); + /*NOTREACHED*/ } amfree(slotstr); } /* ---------------------------- */ -void clean_tape(argc, argv) -int argc; -char **argv; +void +clean_tape( + int argc, + char ** argv) { char *devstr = NULL; + (void)argc; /* Quiet unused parameter warning */ + (void)argv; /* Quiet unused parameter warning */ + if(changer_clean(&devstr) == 0) { fprintf(stderr, "%s: device %s is clean.\n", get_pname(), devstr); } else { @@ -250,12 +270,16 @@ char **argv; /* ---------------------------- */ -void eject_tape(argc, argv) -int argc; -char **argv; +void +eject_tape( + int argc, + char ** argv) { char *slotstr = NULL; + (void)argc; /* Quiet unused parameter warning */ + (void)argv; /* Quiet unused parameter warning */ + if(changer_eject(&slotstr) == 0) { fprintf(stderr, "%s: slot %s is ejected.\n", get_pname(), slotstr); } else { @@ -268,9 +292,10 @@ char **argv; /* ---------------------------- */ -void load_slot(argc, argv) -int argc; -char **argv; +void +load_slot( + int argc, + char ** argv) { char *slotstr = NULL, *devicename = NULL; char *errstr; @@ -282,6 +307,7 @@ char **argv; is_advance = (strcmp(argv[1], "advance") == 0); if(changer_loadslot(argv[1], &slotstr, &devicename)) { error("could not load slot %s: %s", slotstr, changer_resultstr); + /*NOTREACHED*/ } if(! is_advance && (errstr = tape_rewind(devicename)) != NULL) { fprintf(stderr, @@ -306,14 +332,23 @@ char *datestamp; char *label = NULL, *first_match_label = NULL, *first_match = NULL; char *searchlabel, *labelstr; tape_t *tp; +static int scan_init(void *ud, int rc, int ns, int bk, int s); static int -scan_init(ud, rc, ns, bk, s) - void *ud; - int rc, ns, bk, s; +scan_init( + void * ud, + int rc, + int ns, + int bk, + int s) { - if(rc) + (void)ud; /* Quiet unused parameter warning */ + (void)s; /* Quiet unused parameter warning */ + + if(rc) { error("could not get changer info: %s", changer_resultstr); + /*NOTREACHED*/ + } nslots = ns; backwards = bk; @@ -321,16 +356,21 @@ scan_init(ud, rc, ns, bk, s) return 0; } -int loadlabel_slot(ud, rc, slotstr, device) - void *ud; -int rc; -char *slotstr; -char *device; +int +loadlabel_slot( + void * ud, + int rc, + char * slotstr, + char * device) { char *errstr; - if(rc > 1) + (void)ud; /* Quiet unused parameter warning */ + + if(rc > 1) { error("could not load slot %s: %s", slotstr, changer_resultstr); + /*NOTREACHED*/ + } else if(rc == 1) fprintf(stderr, "%s: slot %s: %s\n", get_pname(), slotstr, changer_resultstr); @@ -361,9 +401,10 @@ char *device; return 0; } -void load_label(argc, argv) -int argc; -char **argv; +void +load_label( + int argc, + char ** argv) { if(argc != 2) usage(); @@ -388,52 +429,83 @@ char **argv; /* ---------------------------- */ -int show_init(ud, rc, ns, bk, s) - void *ud; -int rc, ns, bk, s; +int +show_init( + void * ud, + int rc, + int ns, + int bk, + int s) { - if(rc) + (void)ud; /* Quiet unused parameter warning */ + (void)s; /* Quiet unused parameter warning */ + + if(rc) { error("could not get changer info: %s", changer_resultstr); + /*NOTREACHED*/ + } nslots = ns; backwards = bk; return 0; } -int show_init_all(ud, rc, ns, bk, s) - void *ud; -int rc, ns, bk, s; +int +show_init_all( + void * ud, + int rc, + int ns, + int bk, + int s) { int ret = show_init(NULL, rc, ns, bk, s); + + (void)ud; /* Quiet unused parameter warning */ + fprintf(stderr, "%s: scanning all %d slots in tape-changer rack:\n", get_pname(), nslots); return ret; } -int show_init_current(ud, rc, ns, bk, s) - void *ud; -int rc, ns, bk, s; +int +show_init_current( + void * ud, + int rc, + int ns, + int bk, + int s) { int ret = show_init(NULL, rc, ns, bk, s); + + (void)ud; /* Quiet unused parameter warning */ + fprintf(stderr, "%s: scanning current slot in tape-changer rack:\n", get_pname()); return ret; } -int show_slot(ud, rc, slotstr, device) - void *ud; -int rc; -char *slotstr, *device; +int +show_slot( + void * ud, + int rc, + char * slotstr, + char * device) { char *errstr; - if(rc > 1) + (void)ud; /* Quiet unused parameter warning */ + + if(rc > 1) { error("could not load slot %s: %s", slotstr, changer_resultstr); - else if(rc == 1) + /*NOTREACHED*/ + } + else if(rc == 1) { fprintf(stderr, "slot %s: %s\n", slotstr, changer_resultstr); - else if((errstr = tape_rdlabel(device, &datestamp, &label)) != NULL) + } + else if((errstr = tape_rdlabel(device, &datestamp, &label)) != NULL) { fprintf(stderr, "slot %s: %s\n", slotstr, errstr); - else { + amfree(errstr); + } else { fprintf(stderr, "slot %s: date %-8s label %s\n", slotstr, datestamp, label); } @@ -442,20 +514,26 @@ char *slotstr, *device; return 0; } -void show_current(argc, argv) -int argc; -char **argv; +void +show_current( + int argc, + char ** argv) { + (void)argv; /* Quiet unused parameter warning */ + if(argc != 1) usage(); changer_current(NULL, show_init_current, show_slot); } -void show_slots(argc, argv) -int argc; -char **argv; +void +show_slots( + int argc, + char ** argv) { + (void)argv; /* Quiet unused parameter warning */ + if(argc != 1) usage(); @@ -464,12 +542,17 @@ char **argv; /* ---------------------------- */ -void amtape_taper_scan(argc, argv) -int argc; -char **argv; + +void +amtape_taper_scan( + int argc, + char ** argv) { char *device = NULL; - char *label = NULL, *errmsg = NULL; + char *label = NULL; + + (void)argc; /* Quiet unused parameter warning */ + (void)argv; /* Quiet unused parameter warning */ if((tp = lookup_last_reusable_tape(0)) == NULL) searchlabel = NULL; @@ -485,29 +568,32 @@ char **argv; if(searchlabel) fprintf(stderr, "tape label %s or ", searchlabel); fprintf(stderr, "a new tape.\n"); - if (taper_scan(searchlabel, &label, &datestamp, &errmsg, &device) <= 0) { - fprintf(stderr, "%s\n", errmsg); - } + taper_scan(searchlabel, &label, &datestamp,&device, FILE_taperscan_output_callback, stderr); fprintf(stderr, "%s: label %s is now loaded.\n", get_pname(), label); amfree(label); amfree(datestamp); - amfree(errmsg); amfree(device); } /* ---------------------------- */ -void show_device(argc, argv) -int argc; -char **argv; +void +show_device( + int argc, + char ** argv) { char *slot = NULL, *device = NULL; - if(changer_loadslot("current", &slot, &device)) + (void)argc; /* Quiet unused parameter warning */ + (void)argv; /* Quiet unused parameter warning */ + + if(changer_loadslot("current", &slot, &device)) { error("Could not load current slot.\n"); + /*NOTREACHED*/ + } printf("%s\n", device); amfree(slot); @@ -516,16 +602,19 @@ char **argv; /* ---------------------------- */ -int update_one_slot(ud, rc, slotstr, device) - void *ud; - int rc; - char *slotstr; - char *device; +int +update_one_slot( + void * ud, + int rc, + char * slotstr, + char * device) { char *errstr = NULL; char *datestamp = NULL; char *label = NULL; + (void)ud; /* Quiet unused parameter warning */ + if(rc > 1) error("could not load slot %s: %s", slotstr, changer_resultstr); else if(rc == 1) @@ -543,13 +632,15 @@ int update_one_slot(ud, rc, slotstr, device) return 0; } -void update_labeldb(argc, argv) -int argc; -char **argv; +void +update_labeldb( + int argc, + char ** argv) { + (void)argv; /* Quiet unused parameter warning */ + if(argc != 1) usage(); changer_find(NULL, show_init_all, update_one_slot, NULL); } -