comparison 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
comparison
equal deleted inserted replaced
591:adcb617e6a92 592:a0754c98fc2b
27 } 27 }
28 28
29 cmd_delete(argc, argv) 29 cmd_delete(argc, argv)
30 char **argv; 30 char **argv;
31 { 31 {
32 u_char cmdpkt[MAX_PKT_TO_TARGET], *dp; 32 char *pathname;
33 int rc, slen; 33 int minusf_mode;
34 34
35 slen = strlen(argv[1]); 35 if (argc == 2) {
36 if (slen >= TMFFS_STRING_SIZE) { 36 pathname = argv[1];
37 printf("error: pathname arg exceeds string length limit\n"); 37 minusf_mode = 0;
38 return(ERROR_USAGE); 38 } else {
39 if (strcmp(argv[1], "-f")) {
40 fprintf(stderr, "usage: rm [-f] ffs_pathname\n");
41 return(ERROR_USAGE);
42 }
43 pathname = argv[2];
44 minusf_mode = 1;
39 } 45 }
40 dp = cmdpkt + 1; 46 return do_ffs_remove(pathname, minusf_mode);
41 *dp++ = ETM_FFS2;
42 *dp++ = TMFFS_REMOVE;
43 *dp++ = slen + 1;
44 strcpy(dp, argv[1]);
45 dp += slen + 1;
46 rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1);
47 if (rc)
48 return(rc);
49 if (rvi_msg_len != 5) {
50 printf("error: TMFFS_REMOVE response has wrong length\n");
51 return(ERROR_TARGET);
52 }
53 if (rvi_msg[3]) {
54 report_ffs_err("ffs_remove", rvi_msg[3]);
55 return(ERROR_TARGET);
56 }
57 return(0);
58 } 47 }
59 48
60 hexdigit(c) 49 hexdigit(c)
61 { 50 {
62 if (isdigit(c)) 51 if (isdigit(c))