int command_delete(args_t * args) { assert(args != NULL); /* ========================= */ int delete(args_t * args, off_t poffset) { const char * target = args->target; int debug = args->debug; RAII(FILE*, file, fopen_generic(target, "r+", debug), fclose); RAII(ffs_t*, ffs, __ffs_fopen(file, poffset), __ffs_fclose); if (__ffs_entry_delete(ffs, args->name) < 0) return -1; if (args->verbose == f_VERBOSE) printf("%llx: %s: delete\n", (long long)poffset, args->name); return 0; } /* ========================= */ return command(args, delete); }
int ffs_entry_delete(ffs_t * self, const char *path) { int rc = __ffs_entry_delete(self, path); if (rc < 0) { err_t *err = err_get(); assert(err != NULL); __error.errnum = err_code(err); snprintf(__error.errstr, sizeof __error.errstr, "%s: %s : %s(%d) : (code=%d) %.*s\n", program_invocation_short_name, err_type_name(err), err_file(err), err_line(err), err_code(err), err_size(err), (char *)err_data(err)); rc = -1; } return rc; }