"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "client-src/rundump.c" between
amanda-tag-community-3.5.2.tar.gz and amanda-tag-community-3.5.3.tar.gz

About: Amanda is a backup system designed to archive many computers on a network to a single large-capacity tape drive.

rundump.c  (amanda-tag-community-3.5.2):rundump.c  (amanda-tag-community-3.5.3)
skipping to change at line 68 skipping to change at line 68
# endif # endif
#endif #endif
int int
main( main(
int argc, int argc,
char ** argv) char ** argv)
{ {
#ifndef ERRMSG #ifndef ERRMSG
char *dump_program; char *dump_program;
int i; int i, j;
char *e; char *e;
char *cmdline; char *cmdline;
GPtrArray *array = g_ptr_array_new(); GPtrArray *array = g_ptr_array_new();
gchar **strings; gchar **strings;
char **env; char **env;
#endif /* ERRMSG */ #endif /* ERRMSG */
glib_init(); glib_init();
if (argc > 1 && argv[1] && g_str_equal(argv[1], "--version")) { if (argc > 1 && argv[1] && g_str_equal(argv[1], "--version")) {
skipping to change at line 141 skipping to change at line 141
argv++; argv++;
dbprintf(_("config: %s\n"), argv[0]); dbprintf(_("config: %s\n"), argv[0]);
if (!g_str_equal(argv[0], "NOCONFIG")) if (!g_str_equal(argv[0], "NOCONFIG"))
dbrename(argv[0], DBG_SUBDIR_CLIENT); dbrename(argv[0], DBG_SUBDIR_CLIENT);
argc--; argc--;
argv++; argv++;
#ifdef XFSDUMP #ifdef XFSDUMP
if (g_str_equal(argv[0], "xfsdump")) if (g_str_equal(argv[0], "xfsdump")) {
dump_program = XFSDUMP; dump_program = XFSDUMP;
else /* strcmp(argv[0], "xfsdump") != 0 */ validate_xfsdump_options(argc, argv);
} else /* strcmp(argv[0], "xfsdump") != 0 */
#endif #endif
#ifdef VXDUMP #ifdef VXDUMP
if (g_str_equal(argv[0], "vxdump")) if (g_str_equal(argv[0], "vxdump"))
dump_program = VXDUMP; dump_program = VXDUMP;
else /* strcmp(argv[0], "vxdump") != 0 */ else /* strcmp(argv[0], "vxdump") != 0 */
#endif #endif
#ifdef VDUMP #ifdef VDUMP
if (g_str_equal(argv[0], "vdump")) if (g_str_equal(argv[0], "vdump"))
dump_program = VDUMP; dump_program = VDUMP;
else /* strcmp(argv[0], "vdump") != 0 */ else /* strcmp(argv[0], "vdump") != 0 */
#endif #endif
{
#if defined(DUMP) #if defined(DUMP)
dump_program = DUMP; dump_program = DUMP;
validate_dump_option(argc, argv); validate_dump_option(argc, argv);
#else #else
# if defined(XFSDUMP) # if defined(XFSDUMP)
dump_program = XFSDUMP; dump_program = XFSDUMP;
validate_xfsdump_options(argc, argv); validate_xfsdump_options(argc, argv);
# else # else
# if defined(VXDUMP) # if defined(VXDUMP)
dump_program = VXDUMP; dump_program = VXDUMP;
# else # else
dump_program = "dump"; dump_program = "dump";
validate_dump_option(argc, argv); validate_dump_option(argc, argv);
# endif # endif
# endif # endif
#endif #endif
}
/* /*
* Build the array * Build the array
*/ */
g_ptr_array_add(array, g_strdup(dump_program)); g_ptr_array_add(array, g_strdup(dump_program));
for (i = 1; argv[i]; i++) { for (i = 1; argv[i]; i++) {
g_ptr_array_add(array, quote_string(argv[i])); g_ptr_array_add(array, quote_string(argv[i]));
} }
g_ptr_array_add(array, NULL); g_ptr_array_add(array, NULL);
strings = (gchar **)g_ptr_array_free(array, FALSE); strings = (gchar **)g_ptr_array_free(array, FALSE);
cmdline = g_strjoinv(" ", strings); cmdline = g_strjoinv(" ", strings);
g_strfreev(strings); g_strfreev(strings);
dbprintf(_("running: %s\n"), cmdline); dbprintf(_("running: %s\n"), cmdline);
amfree(cmdline); amfree(cmdline);
env = safe_env(); env = safe_env();
//Filter or Discard RSH Environmental variable
int env_count = 0;
for (i = 0; env[i] != NULL; i++){
env_count++;
}
for (i = 0; i < env_count; i++){
if (strncmp(env[i], "RSH=", 4) == 0){
// Remove RSH
g_free(env[i]);
// move array elements one step left - which are after "RSH"
for (j = i; j < env_count; j++){
env[j] = env[j + 1];
}
//decrease the variable count
env[env_count-1] = NULL;
break;
}
}
execve(dump_program, argv, env); execve(dump_program, argv, env);
free_env(env); free_env(env);
e = strerror(errno); e = strerror(errno);
dbprintf(_("failed (%s)\n"), e); dbprintf(_("failed (%s)\n"), e);
dbclose(); dbclose();
g_fprintf(stderr, _("rundump: could not exec %s: %s\n"), dump_program, e); g_fprintf(stderr, _("rundump: could not exec %s: %s\n"), dump_program, e);
return 1; return 1;
#endif /* } */ #endif /* } */
skipping to change at line 282 skipping to change at line 303
{ {
break; break;
} }
default: default:
error ("error [%s invalid option: %c]\n", get_pna me(), c); error ("error [%s invalid option: %c]\n", get_pna me(), c);
break; break;
} }
numargs--; numargs--;
} }
} }
void validate_xfsdump_options(int argc, char ** argv) void validate_xfsdump_options(int argc, char ** argv)
{ {
int c; int c;
int numargs = argc; int numargs = argc;
while (numargs > 0) while (numargs > 0)
{ {
c = getopt(argc, argv, "ab:d:ef:l:mop:qs:t:v:z:AB:DFI:JL:M:RT"); c = getopt(argc, argv, "ab:d:ef:l:mop:qs:t:v:z:AB:DFI:JL:M:RT");
switch (c) { switch (c) {
case -1: case -1:
optind++; optind++;
 End of changes. 7 change blocks. 
3 lines changed or deleted 25 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)