X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=application-src%2Famgtar.c;h=7cf28a1ffce292a70c68b0bd3a31d4f1036eb130;hb=c6f0a88c567f8536c498f554285aed1f8150da18;hp=fd13a6c9f66a1c0a5ab110b5a538d2db23c93eb8;hpb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;p=debian%2Famanda diff --git a/application-src/amgtar.c b/application-src/amgtar.c index fd13a6c..7cf28a1 100644 --- a/application-src/amgtar.c +++ b/application-src/amgtar.c @@ -296,6 +296,7 @@ main( #else gnutar_path = NULL; #endif + gnutar_listdir = NULL; gnutar_directory = NULL; gnutar_onefilesystem = 1; gnutar_atimepreserve = 1; @@ -357,6 +358,7 @@ main( /* parse argument */ command = argv[1]; + gnutar_listdir = stralloc(getconf_str(CNF_GNUTAR_LIST_DIR)); argument.config = NULL; argument.host = NULL; argument.message = 0; @@ -369,6 +371,7 @@ main( argument.exclude_list_glob = NULL; argument.verbose = 0; init_dle(&argument.dle); + argument.dle.record = 0; while (1) { int option_index = 0; @@ -546,7 +549,6 @@ main( } } - gnutar_listdir = getconf_str(CNF_GNUTAR_LIST_DIR); if (strlen(gnutar_listdir) == 0) gnutar_listdir = NULL; @@ -636,11 +638,37 @@ static void amgtar_selfcheck( application_argument_t *argument) { + if (argument->dle.disk) { + char *qdisk = quote_string(argument->dle.disk); + fprintf(stdout, "OK disk %s\n", qdisk); + amfree(qdisk); + } + + printf("OK amgtar version %s\n", VERSION); amgtar_build_exinclude(&argument->dle, 1, NULL, NULL, NULL, NULL); printf("OK amgtar\n"); if (gnutar_path) { - check_file(gnutar_path, X_OK); + if (check_file(gnutar_path, X_OK)) { + char *gtar_version; + GPtrArray *argv_ptr = g_ptr_array_new(); + + g_ptr_array_add(argv_ptr, gnutar_path); + g_ptr_array_add(argv_ptr, "--version"); + g_ptr_array_add(argv_ptr, NULL); + + gtar_version = get_first_line(argv_ptr); + if (gtar_version) { + char *gv; + for (gv = gtar_version; *gv && !g_ascii_isdigit(*gv); gv++); + printf("OK amgtar gtar-version %s\n", gv); + } else { + printf(_("ERROR [Can't get %s version]\n"), gnutar_path); + } + + g_ptr_array_free(argv_ptr, TRUE); + amfree(gtar_version); + } } else { printf(_("ERROR [GNUTAR program not available]\n")); } @@ -654,11 +682,6 @@ amgtar_selfcheck( printf(_("ERROR [No GNUTAR-LISTDIR]\n")); } - if (argument->dle.disk) { - char *qdisk = quote_string(argument->dle.disk); - fprintf(stdout, "OK %s\n", qdisk); - amfree(qdisk); - } if (gnutar_directory) { check_dir(gnutar_directory, R_OK); } else if (argument->dle.device) { @@ -1022,16 +1045,25 @@ amgtar_backup( } if (!errmsg && incrname && strlen(incrname) > 4) { - char *nodotnew; - nodotnew = stralloc(incrname); - nodotnew[strlen(nodotnew)-4] = '\0'; - if (rename(incrname, nodotnew)) { - dbprintf(_("%s: warning [renaming %s to %s: %s]\n"), - get_pname(), incrname, nodotnew, strerror(errno)); - g_fprintf(mesgstream, _("? warning [renaming %s to %s: %s]\n"), - incrname, nodotnew, strerror(errno)); + if (argument->dle.record) { + char *nodotnew; + nodotnew = stralloc(incrname); + nodotnew[strlen(nodotnew)-4] = '\0'; + if (rename(incrname, nodotnew)) { + dbprintf(_("%s: warning [renaming %s to %s: %s]\n"), + get_pname(), incrname, nodotnew, strerror(errno)); + g_fprintf(mesgstream, _("? warning [renaming %s to %s: %s]\n"), + incrname, nodotnew, strerror(errno)); + } + amfree(nodotnew); + } else { + if (unlink(incrname) == -1) { + dbprintf(_("%s: warning [unlink %s: %s]\n"), + get_pname(), incrname, strerror(errno)); + g_fprintf(mesgstream, _("? warning [unlink %s: %s]\n"), + incrname, strerror(errno)); + } } - amfree(nodotnew); } dbprintf("sendbackup: size %lld\n", (long long)dump_size);