commit 8d8fb849cf1470dfafdb8a5cc598aa510fb8e5c6 from: Omar Polo date: Mon Jan 17 16:34:07 2022 UTC ftp: add nextfid to find the next lower free fid commit - c37e1cfe6fd21e6a2adbecd132a186c8ee2b822a commit + 8d8fb849cf1470dfafdb8a5cc598aa510fb8e5c6 blob - 420ce6ffd7afeceb2a9abe0530254a0d33a10a91 blob + a3c0e9b7eb542715c0bb63b83fd345d22f6473af --- kamiftp/ftp.c +++ kamiftp/ftp.c @@ -176,6 +176,17 @@ usage(int ret) exit(ret); } +static int +nextfid(void) +{ + uint32_t i; + + for (i = 0; ; ++i) { + if (i != pwdfid) + return i; + } +} + static void do_send(void) { @@ -765,7 +776,7 @@ woc_file(int fd, const char *prompt, const char *path) char *errstr; int nfid, miss; - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, path, &miss, &qid); if (errstr != NULL && miss > 1) { printf("%s: %s\n", path, errstr); @@ -1030,7 +1041,7 @@ cmd_cd(int argc, const char **argv) return; } - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, argv[0], &miss, &qid); if (errstr != NULL) { printf("%s: %s\n", argv[0], errstr); @@ -1066,7 +1077,7 @@ cmd_edit(int argc, const char **argv) (ed = getenv("EDITOR")) == NULL) ed = "ed"; - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, *argv, &miss, &qid); if (errstr != NULL) { printf("%s: %s\n", *argv, errstr); @@ -1132,7 +1143,7 @@ cmd_get(int argc, const char **argv) else l = argv[0]; - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, argv[0], &miss, &qid); if (errstr != NULL) { printf("%s: %s\n", argv[0], errstr); @@ -1325,7 +1336,7 @@ cmd_page(int argc, const char **argv) if ((pager = getenv("PAGER")) == NULL) pager = "less"; - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, *argv, &miss, &qid); if (errstr != NULL) { printf("%s: %s\n", *argv, errstr); @@ -1394,7 +1405,7 @@ cmd_rename(int argc, const char **argv) return; } - nfid = pwdfid+1; + nfid = nextfid(); errstr = walk_path(pwdfid, nfid, argv[0], &miss, &qid); if (errstr != NULL) { printf("%s: %s\n", argv[0], errstr);