X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=tape-src%2Fammt.c;h=6e73aa67f33e068a31a94f43f36156698e34c62b;hb=fb2bd066c2f8b34addafe48d62550e3033a59431;hp=ca5e1c9e418dd0c34c79666fa489cd3d8ab65fdf;hpb=3ab887b9bc819a846c75dd7f2ee5d41fac22b19f;p=debian%2Famanda diff --git a/tape-src/ammt.c b/tape-src/ammt.c index ca5e1c9..6e73aa6 100644 --- a/tape-src/ammt.c +++ b/tape-src/ammt.c @@ -29,27 +29,31 @@ extern char *getenv(); extern int optind; -static int do_asf(); -static int do_bsf(); -static int do_status(); +static int do_asf(int fd, off_t count); +static int do_bsf(int fd, off_t count); +static int do_status(int fd, off_t count); +static void usage(void); struct cmd { char *name; - int min_chars; + size_t min_chars; int count; - int (*func)(); + int (*func)(int, off_t); int flags; } cmd[] = { - { "eof", 0, 1, tapefd_weof, O_RDWR }, - { "weof", 0, 1, tapefd_weof, O_RDWR }, - { "fsf", 0, 1, tapefd_fsf, O_RDONLY }, - { "asf", 0, 0, do_asf, O_RDONLY }, - { "bsf", 0, 1, do_bsf, O_RDONLY }, - { "rewind", 0, 0, tapefd_rewind, O_RDONLY }, - { "offline", 0, 0, tapefd_unload, O_RDONLY }, - { "rewoffl", 0, 0, tapefd_unload, O_RDONLY }, - { "status", 0, 0, do_status, O_RDONLY }, - { NULL, 0, 0, NULL } + { "eof", 0, 1, tapefd_weof, O_RDWR }, + { "weof", 0, 1, tapefd_weof, O_RDWR }, + { "fsf", 0, 1, tapefd_fsf, O_RDONLY }, + { "asf", 0, 0, do_asf, O_RDONLY }, + { "bsf", 0, 1, do_bsf, O_RDONLY }, + { "rewind", 0, 0, (int (*)(int, off_t))tapefd_rewind, + O_RDONLY }, + { "offline", 0, 0, (int (*)(int, off_t))tapefd_unload, + O_RDONLY }, + { "rewoffl", 0, 0, (int (*)(int, off_t))tapefd_unload, + O_RDONLY }, + { "status", 0, 0, do_status, O_RDONLY }, + { NULL, 0, 0, NULL, 0 } }; static char *pgm; @@ -58,81 +62,83 @@ static int debug_ammt = 0; static char *tapename; static int -do_asf(fd, count) - int fd; - int count; +do_asf( + int fd, + off_t count) { int r; if(debug_ammt) { - fprintf(stderr, "calling tapefd_rewind()\n"); + g_fprintf(stderr, _("calling tapefd_rewind()\n")); } if(0 != (r = tapefd_rewind(fd))) { return r; } if(debug_ammt) { - fprintf(stderr, "calling tapefd_fsf(%d)\n", count); + g_fprintf(stderr, _("calling tapefd_fsf(%lld)\n"), (long long)count); } return tapefd_fsf(fd, count); } static int -do_bsf(fd, count) - int fd; - int count; +do_bsf( + int fd, + off_t count) { if(debug_ammt) { - fprintf(stderr, "calling tapefd_fsf(%d)\n", -count); + g_fprintf(stderr, _("calling tapefd_fsf(%lld)\n"), (long long)-count); } return tapefd_fsf(fd, -count); } static int -do_status(fd, count) - int fd; - int count; +do_status( + int fd, + off_t count) { int ret; struct am_mt_status stat; + (void)count; /* Quiet unused parameter warning */ + if(debug_ammt) { - fprintf(stderr, "calling tapefd_status()\n"); + g_fprintf(stderr, _("calling tapefd_status()\n")); } if((ret = tapefd_status(fd, &stat)) != 0) { return ret; } - printf("%s status:", tapename); + g_printf(_("%s status:"), tapename); if(stat.online_valid) { if(stat.online) { - fputs(" ONLINE", stdout); + fputs(_(" ONLINE"), stdout); } else { - fputs(" OFFLINE", stdout); + fputs(_(" OFFLINE"), stdout); } } if(stat.bot_valid && stat.bot) { - fputs(" BOT", stdout); + fputs(_(" BOT"), stdout); } if(stat.eot_valid && stat.eot) { - fputs(" EOT", stdout); + fputs(_(" EOT"), stdout); } if(stat.protected_valid && stat.protected) { - fputs(" PROTECTED", stdout); + fputs(_(" PROTECTED"), stdout); } if(stat.device_status_valid) { - printf(" ds == 0x%0*lx", + g_printf(_(" ds == 0x%0*lx"), stat.device_status_size * 2, (unsigned long)stat.device_status); } if(stat.error_status_valid) { - printf(" er == 0x%0*lx", + g_printf(_(" er == 0x%0*lx"), stat.error_status_size * 2, (unsigned long)stat.error_status); } if(stat.fileno_valid) { - printf(" fileno == %ld", stat.fileno); + g_printf(_(" fileno == %ld"), stat.fileno); } if(stat.blkno_valid) { - printf(" blkno == %ld", stat.blkno); + g_printf(_(" blkno == %ld"), stat.blkno); } putchar('\n'); @@ -140,22 +146,39 @@ do_status(fd, count) } static void -usage() +usage(void) { - fprintf(stderr, "usage: %s [-d] [-f|-t device] command [count]\n", pgm); + g_fprintf(stderr, _("usage: %s [-d] [-f|-t device] command [count]\n"), pgm); exit(1); } int -main(int argc, char **argv) { +main( + int argc, + char ** argv) +{ int ch; - int count; - int i; - int j; + off_t count; + size_t i; + size_t j; int fd; int save_errno; char *s; + /* + * Configure program for internationalization: + * 1) Only set the message locale for now. + * 2) Set textdomain for all amanda related programs to "amanda" + * We don't want to be forced to support dozens of message catalogs. + */ + setlocale(LC_MESSAGES, "C"); + textdomain("amanda"); + + fprintf(stderr, _("ammt is deprecated\n")); + + /* Don't die when child closes pipe */ + signal(SIGPIPE, SIG_IGN); + if((pgm = strrchr(argv[0], '/')) != NULL) { pgm++; } else { @@ -166,7 +189,7 @@ main(int argc, char **argv) { switch(ch) { case 'd': debug_ammt = 1; - fprintf(stderr, "debug mode!\n"); + g_fprintf(stderr, _("debug mode!\n")); break; case 'f': case 't': @@ -174,25 +197,26 @@ main(int argc, char **argv) { break; default: usage(); - /* NOTREACHED */ + /*NOTREACHED*/ } } if(optind >= argc) { usage(); - /* NOTREACHED */ + /*NOTREACHED*/ } /* * Compute the minimum abbreviation for each command. */ for(i = 0; cmd[i].name; i++) { - cmd[i].min_chars = 1; + cmd[i].min_chars = (size_t)1; while (1) { for(j = 0; cmd[j].name; j++) { if(i == j) { continue; } - if(0 == strncmp(cmd[i].name, cmd[j].name, cmd[i].min_chars)) { + if(0 == strncmp(cmd[i].name, cmd[j].name, + cmd[i].min_chars)) { break; } } @@ -202,10 +226,10 @@ main(int argc, char **argv) { cmd[i].min_chars++; } if(debug_ammt) { - fprintf(stderr, "syntax: %-20s -> %*.*s\n", + g_fprintf(stderr, _("syntax: %-20s -> %*.*s\n"), cmd[i].name, - cmd[i].min_chars, - cmd[i].min_chars, + (int)cmd[i].min_chars, + (int)cmd[i].min_chars, cmd[i].name); } } @@ -213,43 +237,44 @@ main(int argc, char **argv) { /* * Process the command. */ - s = "unknown"; + s = _("unknown"); j = strlen(argv[optind]); for(i = 0; cmd[i].name; i++) { if(0 == strncmp(cmd[i].name, argv[optind], j)) { if(j >= cmd[i].min_chars) { break; } - s = "ambiguous"; + s = _("ambiguous"); } } if(0 == cmd[i].name) { - fprintf(stderr, "%s: %s command: %s\n", pgm, s, argv[optind]); + g_fprintf(stderr, _("%s: %s command: %s\n"), pgm, s, argv[optind]); exit(1); } optind++; if(0 == tapename) { - fprintf(stderr, "%s: -f device or -t device is required\n", pgm); + g_fprintf(stderr, _("%s: -f device or -t device is required\n"), pgm); exit(1); } if(debug_ammt) { - fprintf(stderr, "tapename is \"%s\"\n", tapename); + g_fprintf(stderr, _("tapename is \"%s\"\n"), tapename); } - count = 1; + count = (off_t)1; if(optind < argc && cmd[i].count) { - count = atoi(argv[optind]); + count = OFF_T_ATOI(argv[optind]); } if(debug_ammt) { - fprintf(stderr, "calling tape_open(\"%s\",%d)\n", tapename, cmd[i].flags); + g_fprintf(stderr, _("calling tape_open(\"%s\",%d)\n"), tapename, cmd[i].flags); } - if((fd = tape_open(tapename, cmd[i].flags)) < 0) { + if((fd = tape_open(tapename, cmd[i].flags, 0)) < 0) { goto report_error; } if(debug_ammt) { - fprintf(stderr, "processing %s(%d)\n", cmd[i].name, count); + g_fprintf(stderr, _("processing %s(%lld)\n"), + cmd[i].name, (long long)count); } if(0 != (*cmd[i].func)(fd, count)) { goto report_error; @@ -262,11 +287,11 @@ main(int argc, char **argv) { report_error: save_errno = errno; - fprintf(stderr, "%s %s", tapename, cmd[i].name); + g_fprintf(stderr, _("%s %s"), tapename, cmd[i].name); if(cmd[i].count) { - fprintf(stderr, " %d", count); + g_fprintf(stderr, " %lld", (long long)count); } errno = save_errno; - perror(" failed"); - exit(1); + perror(_(" failed")); + return (1); /* exit */ }