X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=oldrecover-src%2Famrecover.c;h=6f2dde3a3437a9fa22797c6dc2b668ba5ce7d796;hb=ab88985dfde989b20f63569306ae17dee41d8fcf;hp=4201fc2c0d72b3875ccb94d722dca223edf4a0cf;hpb=310f09c0f55a2fb6f3f3746d6ded20099792b773;p=debian%2Famanda diff --git a/oldrecover-src/amrecover.c b/oldrecover-src/amrecover.c index 4201fc2..6f2dde3 100644 --- a/oldrecover-src/amrecover.c +++ b/oldrecover-src/amrecover.c @@ -24,7 +24,7 @@ * file named AUTHORS, in the root directory of this distribution. */ /* - * $Id: amrecover.c,v 1.7.2.2 2006/12/12 14:56:38 martinea Exp $ + * $Id: amrecover.c,v 1.7 2006/07/25 18:27:57 martinea Exp $ * * an interactive program for recovering backed-up files */ @@ -37,6 +37,7 @@ #include "getfsent.h" #include "dgram.h" #include "util.h" +#include "conffile.h" extern int process_line(char *line); int guess_disk(char *cwd, size_t cwd_len, char **dn_guess, char **mpt_guess); @@ -45,7 +46,7 @@ int grab_reply(int show); void sigint_handler(int signum); int main(int argc, char **argv); -#define USAGE "Usage: amoldrecover [[-C] ] [-s ] [-t ] [-d ]\n" +#define USAGE _("Usage: amoldrecover [[-C] ] [-s ] [-t ] [-d ]\n") char *config = NULL; char *server_name = NULL; @@ -85,11 +86,11 @@ get_line(void) fputc('\n', stderr); } if(save_errno != 0) { - fprintf(stderr, "%s: Error reading line from server: %s\n", + g_fprintf(stderr, _("%s: Error reading line from server: %s\n"), get_pname(), strerror(save_errno)); } else { - fprintf(stderr, "%s: Unexpected end of file, check amindexd*debug on server %s\n", + g_fprintf(stderr, _("%s: Unexpected end of file, check amindexd*debug on server %s\n"), get_pname(), server_name); } @@ -294,7 +295,7 @@ guess_disk ( /*NOTREACHED*/ } cwd_length = strlen(cwd); - dbprintf(("guess_disk: %zu: \"%s\"\n", cwd_length, cwd)); + dbprintf(_("guess_disk: %zu: \"%s\"\n"), cwd_length, cwd); if (open_fstab() == 0) { return -1; @@ -304,11 +305,11 @@ guess_disk ( while (get_fstab_nextentry(&fsent)) { current_length = fsent.mntdir ? strlen(fsent.mntdir) : (size_t)0; - dbprintf(("guess_disk: %zu: %zu: \"%s\": \"%s\"\n", + dbprintf(_("guess_disk: %zu: %zu: \"%s\": \"%s\"\n"), longest_match, current_length, - fsent.mntdir ? fsent.mntdir : "(mntdir null)", - fsent.fsname ? fsent.fsname : "(fsname null)")); + fsent.mntdir ? fsent.mntdir : _("(mntdir null)"), + fsent.fsname ? fsent.fsname : _("(fsname null)")); if ((current_length > longest_match) && (current_length <= cwd_length) && (strncmp(fsent.mntdir, cwd, current_length) == 0)) @@ -324,9 +325,9 @@ guess_disk ( fsname = newstralloc(fsname,fsent.fsname+strlen(DEV_PREFIX)); } local_disk = is_local_fstype(&fsent); - dbprintf(("guess_disk: local_disk = %d, fsname = \"%s\"\n", + dbprintf(_("guess_disk: local_disk = %d, fsname = \"%s\"\n"), local_disk, - fsname)); + fsname); } } close_fstab(); @@ -346,7 +347,7 @@ guess_disk ( /* have mount point now */ /* disk name may be specified by mount point (logical name) or device name, have to determine */ - printf("Trying disk %s ...\n", *mpt_guess); + g_printf(_("Trying disk %s ...\n"), *mpt_guess); disk_try = stralloc2("DISK ", *mpt_guess); /* try logical name */ if (exchange(disk_try) == -1) exit(1); @@ -357,7 +358,7 @@ guess_disk ( amfree(fsname); return 1; } - printf("Trying disk %s ...\n", fsname); + g_printf(_("Trying disk %s ...\n"), fsname); disk_try = stralloc2("DISK ", fsname); /* try device name */ if (exchange(disk_try) == -1) exit(1); @@ -409,6 +410,15 @@ main( char *line = NULL; struct tm *tm; + /* + * 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"); + safe_fd(-1, 0); set_pname("amoldrecover"); @@ -418,17 +428,9 @@ main( dbopen(DBG_SUBDIR_CLIENT); -#ifndef IGNORE_UID_CHECK - if (geteuid() != 0) { - erroutput_type |= ERR_SYSLOG; - error("amrecover must be run by root"); - /*NOTREACHED*/ - } -#endif - localhost = alloc(MAX_HOSTNAME_LENGTH+1); if (gethostname(localhost, MAX_HOSTNAME_LENGTH) != 0) { - error("cannot determine local host name\n"); + error(_("cannot determine local host name\n")); /*NOTREACHED*/ } localhost[MAX_HOSTNAME_LENGTH] = '\0'; @@ -437,6 +439,8 @@ main( dbrename(config, DBG_SUBDIR_CLIENT); + check_running_as(RUNNING_AS_ROOT); + amfree(server_name); server_name = getenv("AMANDA_SERVER"); if(!server_name) server_name = DEFAULT_SERVER; @@ -447,6 +451,15 @@ main( if(!tape_server_name) tape_server_name = DEFAULT_TAPE_SERVER; tape_server_name = stralloc(tape_server_name); + config_init(CONFIG_INIT_CLIENT, NULL); + + if (config_errors(NULL) >= CFGERR_WARNINGS) { + config_print_errors(); + if (config_errors(NULL) >= CFGERR_ERRORS) { + g_critical(_("errors processing config file")); + } + } + if (argc > 1 && argv[1][0] != '-') { /* @@ -489,13 +502,13 @@ main( case 'U': case '?': - (void)printf(USAGE); + (void)g_printf(USAGE); return 0; } } if (optind != argc) { - (void)fprintf(stderr, USAGE); + (void)g_fprintf(stderr, USAGE); exit(1); } @@ -512,16 +525,16 @@ main( sigemptyset(&act.sa_mask); act.sa_flags = 0; if (sigaction(SIGINT, &act, &oact) != 0) { - error("error setting signal handler: %s", strerror(errno)); + error(_("error setting signal handler: %s"), strerror(errno)); /*NOTREACHED*/ } service_name = stralloc2("amandaidx", SERVICE_SUFFIX); - printf("AMRECOVER Version %s. Contacting server on %s ...\n", + g_printf(_("AMRECOVER Version %s. Contacting server on %s ...\n"), version(), server_name); if ((sp = getservbyname(service_name, "tcp")) == NULL) { - error("%s/tcp unknown protocol", service_name); + error(_("%s/tcp unknown protocol"), service_name); /*NOTREACHED*/ } amfree(service_name); @@ -532,25 +545,15 @@ main( &my_port, 0); if (server_socket < 0) { - error("cannot connect to %s: %s", server_name, strerror(errno)); + error(_("cannot connect to %s: %s"), server_name, strerror(errno)); /*NOTREACHED*/ } if (my_port >= IPPORT_RESERVED) { aclose(server_socket); - error("did not get a reserved port: %d", my_port); + error(_("did not get a reserved port: %d"), my_port); /*NOTREACHED*/ } -#if 0 - /* - * We may need root privilege again later for a reserved port to - * the tape server, so we will drop down now but might have to - * come back later. - */ - setegid(getgid()); - seteuid(getuid()); -#endif - /* get server's banner */ if (grab_reply(1) == -1) { aclose(server_socket); @@ -602,9 +605,9 @@ main( if (tm) strftime(dump_date, sizeof(dump_date), "%Y-%m-%d", tm); else - error("BAD DATE"); + error(_("BAD DATE")); - printf("Setting restore date to today (%s)\n", dump_date); + g_printf(_("Setting restore date to today (%s)\n"), dump_date); line = stralloc2("DATE ", dump_date); if (converse(line) == -1) { aclose(server_socket); @@ -632,20 +635,20 @@ main( { case 1: /* okay, got a guess. Set disk accordingly */ - printf("$CWD '%s' is on disk '%s' mounted at '%s'.\n", + g_printf(_("$CWD '%s' is on disk '%s' mounted at '%s'.\n"), cwd, dn_guess, mpt_guess); set_disk(dn_guess, mpt_guess); set_directory(cwd); if (server_happy() && strcmp(cwd, mpt_guess) != 0) - printf("WARNING: not on root of selected filesystem, check man-page!\n"); + g_printf(_("WARNING: not on root of selected filesystem, check man-page!\n")); amfree(dn_guess); amfree(mpt_guess); break; case 0: - printf("$CWD '%s' is on a network mounted disk\n", + g_printf(_("$CWD '%s' is on a network mounted disk\n"), cwd); - printf("so you must 'sethost' to the server\n"); + g_printf(_("so you must 'sethost' to the server\n")); /* fake an unhappy server */ server_line[0] = '5'; break; @@ -653,7 +656,7 @@ main( case 2: case -1: default: - printf("Use the setdisk command to choose dump disk to recover\n"); + g_printf(_("Use the setdisk command to choose dump disk to recover\n")); /* fake an unhappy server */ server_line[0] = '5'; break; @@ -689,7 +692,7 @@ get_security(void) struct passwd *pwptr; if((pwptr = getpwuid(getuid())) == NULL) { - error("can't get login name for my uid %ld", (long)getuid()); + error(_("can't get login name for my uid %ld"), (long)getuid()); /*NOTREACHED*/ } return stralloc2("SECURITY USER ", pwptr->pw_name);