Apply patch: ncpfs-hg-commit-407.patch

This commit is contained in:
Mario Fetka
2026-04-28 20:56:02 +02:00
parent 38655cdcbf
commit 1d3ed884cc
2 changed files with 136 additions and 10 deletions

View File

@@ -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_conn* conn, int volume, u_int32_t directo
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;
}