FreeCalypso > hg > freecalypso-tools
diff 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 |
line wrap: on
line diff
--- a/rvinterf/etmsync/fileio.c Tue Feb 04 03:09:11 2020 +0000 +++ b/rvinterf/etmsync/fileio.c Tue Feb 04 03:36:08 2020 +0000 @@ -399,3 +399,35 @@ return(ERROR_TARGET); } } + +do_ffs_remove(pathname, minusf_mode) + char *pathname; +{ + u_char cmdpkt[MAX_PKT_TO_TARGET], *dp; + int rc, slen; + + slen = strlen(pathname); + if (slen >= TMFFS_STRING_SIZE) { + printf("error: pathname arg exceeds string length limit\n"); + return(ERROR_USAGE); + } + dp = cmdpkt + 1; + *dp++ = ETM_FFS2; + *dp++ = TMFFS_REMOVE; + *dp++ = slen + 1; + strcpy(dp, pathname); + 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]) /* success */ + return(0); + if (minusf_mode && rvi_msg[3] == TMFFS_ERR_NOTFOUND) + return(0); /* treat as OK */ + report_ffs_err("ffs_remove", rvi_msg[3]); + return(ERROR_TARGET); +}