comparison rvinterf/etmsync/fileio.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 e7502631a0f9
children e6fe9d25377a
comparison
equal deleted inserted replaced
591:adcb617e6a92 592:a0754c98fc2b
397 else { 397 else {
398 printf("error: %s exists and is not a directory\n", pathname); 398 printf("error: %s exists and is not a directory\n", pathname);
399 return(ERROR_TARGET); 399 return(ERROR_TARGET);
400 } 400 }
401 } 401 }
402
403 do_ffs_remove(pathname, minusf_mode)
404 char *pathname;
405 {
406 u_char cmdpkt[MAX_PKT_TO_TARGET], *dp;
407 int rc, slen;
408
409 slen = strlen(pathname);
410 if (slen >= TMFFS_STRING_SIZE) {
411 printf("error: pathname arg exceeds string length limit\n");
412 return(ERROR_USAGE);
413 }
414 dp = cmdpkt + 1;
415 *dp++ = ETM_FFS2;
416 *dp++ = TMFFS_REMOVE;
417 *dp++ = slen + 1;
418 strcpy(dp, pathname);
419 dp += slen + 1;
420 rc = etm_pkt_exch(cmdpkt, dp - cmdpkt - 1);
421 if (rc)
422 return(rc);
423 if (rvi_msg_len != 5) {
424 printf("error: TMFFS_REMOVE response has wrong length\n");
425 return(ERROR_TARGET);
426 }
427 if (!rvi_msg[3]) /* success */
428 return(0);
429 if (minusf_mode && rvi_msg[3] == TMFFS_ERR_NOTFOUND)
430 return(0); /* treat as OK */
431 report_ffs_err("ffs_remove", rvi_msg[3]);
432 return(ERROR_TARGET);
433 }