FreeCalypso > hg > freecalypso-tools
diff rvinterf/etmsync/fswrite.c @ 592:a0754c98fc2b
fc-fsio: rm -f mode implemented (ignore EFFS_NOTFOUND),
actual ffs_remove operation factored out into do_ffs_remove()
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 04 Feb 2020 03:36:08 +0000 |
parents | 8136fb5eb292 |
children |
line wrap: on
line diff
--- a/rvinterf/etmsync/fswrite.c Tue Feb 04 03:09:11 2020 +0000 +++ b/rvinterf/etmsync/fswrite.c Tue Feb 04 03:36:08 2020 +0000 @@ -29,32 +29,21 @@ cmd_delete(argc, argv) char **argv; { - u_char cmdpkt[MAX_PKT_TO_TARGET], *dp; - int rc, slen; + char *pathname; + int minusf_mode; - slen = strlen(argv[1]); - if (slen >= TMFFS_STRING_SIZE) { - printf("error: pathname arg exceeds string length limit\n"); - return(ERROR_USAGE); + if (argc == 2) { + pathname = argv[1]; + minusf_mode = 0; + } else { + if (strcmp(argv[1], "-f")) { + fprintf(stderr, "usage: rm [-f] ffs_pathname\n"); + return(ERROR_USAGE); + } + pathname = argv[2]; + minusf_mode = 1; } - dp = cmdpkt + 1; - *dp++ = ETM_FFS2; - *dp++ = TMFFS_REMOVE; - *dp++ = slen + 1; - strcpy(dp, argv[1]); - dp += slen + 1; - rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1); - if (rc) - return(rc); - if (rvi_msg_len != 5) { - printf("error: TMFFS_REMOVE response has wrong length\n"); - return(ERROR_TARGET); - } - if (rvi_msg[3]) { - report_ffs_err("ffs_remove", rvi_msg[3]); - return(ERROR_TARGET); - } - return(0); + return do_ffs_remove(pathname, minusf_mode); } hexdigit(c)