File ncpfs-hg-commit-407.patch of Package ncpfs
changeset: 407:8a41f32f7288
user: Scott Bentley <bentleys@hhangus.com>
date: Sun May 22 23:50:08 2005 +0000
files: util/nwsalvage.c
description:
Add `-r' option for renaming file while salvaging it.
diff -r 6af6a89be103 -r 8a41f32f7288 util/nwsalvage.c
--- a/util/nwsalvage.c Sun May 22 23:37:08 2005 +0000
+++ b/util/nwsalvage.c Sun May 22 23:50:08 2005 +0000
@@ -35,14 +35,15 @@ static void usage(void) {
"\n"
"-h Print this help text.\n"
"-s Silent mode.\n"
-"-n <namespace> Namespace for accessing files\n"
+"-n <namespace> Namespace for accessing files.\n"
" DOS\n"
" LONG - Default\n"
" MAC\n"
" FTAM\n"
" NFS\n"
+"-r <newname> Rename the salvaged file. 255 chars max."
"\n"
-"directory Directory in which salvageable file(s) resides.\n"
+"directory Directory in which salvageable file resides.\n"
" Default is current directory.\n"
"\n"
"file_id The file identified by file_id will be salvaged.\n"
@@ -52,13 +53,14 @@ static void usage(void) {
}
static int g_silent = 0;
+static int g_rename = 0;
+static char* g_newname;
static int g_nwns = NW_NS_LONG;
static void process_salvage(struct ncp_conn* conn, int volume, u_int32_t directory_id, int file_id) {
struct ncp_deleted_file info;
int found;
- char oldfilename[256];
- char newfilename[256];
+ char filename[256];
NWCCODE err;
@@ -66,22 +68,26 @@ static void process_salvage(struct ncp_c
info.seq = -1;
while (!ncp_ns_scan_salvageable_file(conn, g_nwns,
1, volume, directory_id, NULL, 0,
- &info, oldfilename, sizeof(oldfilename))) {
+ &info, filename, sizeof(filename))) {
if (info.seq == file_id) {
- strcpy(newfilename, oldfilename);
found++;
- if ((err = ncp_ns_salvage_file(conn, g_nwns, &info, newfilename)) != 0) {
+
+ if (g_rename) {
+ strcpy(filename, g_newname);
+ }
+
+ if ((err = ncp_ns_salvage_file(conn, g_nwns, &info, filename)) != 0) {
if (!g_silent) {
if (err == 0x89FE) {
printf(_("%8s%d -- failed (File already exists, or path inaccessible)\n"), "", info.seq);
} else {
- printf(_("%8s%d %s -- failed (%s)\n"), "", info.seq, newfilename, strnwerror(err));
+ printf(_("%8s%d %s -- failed (%s)\n"), "", info.seq, filename, strnwerror(err));
}
}
} else {
if (!g_silent) {
- printf(_("%8s%d %s -- salvaged \n"), "", info.seq, newfilename);
+ printf(_("%8s%d %s -- salvaged \n"), "", info.seq, filename);
}
}
break;
@@ -101,12 +107,13 @@ int main(int argc, char* argv[]) {
int err;
int c;
char* opt_n;
+ char* opt_r;
setlocale(LC_ALL, "");
bindtextdomain(NCPFS_PACKAGE, LOCALEDIR);
textdomain(NCPFS_PACKAGE);
- while ((c = getopt(argc, argv, "hsn")) != -1) {
+ while ((c = getopt(argc, argv, "hsnr")) != -1) {
switch (c) {
case '?':
case ':':break;
@@ -130,6 +137,15 @@ int main(int argc, char* argv[]) {
exit(1);
}
break;
+ case 'r':
+ opt_r = argv[optind++];
+ if (strlen(opt_r) > 255 || strlen(opt_r) < 1) {
+ fprintf(stderr, _("Filename for option '-%c' has invalid length."), c);
+ exit(1);
+ }
+ g_rename = 1;
+ g_newname = opt_r;
+ break;
default: fprintf(stderr, _("Unexpected option `-%c'\n"), c);
break;
}