/** rm <obj> */ static int cmd_rm(int argc, char *argv[]) { const char *name = NULL; int ret = 0; struct uffs_stat st; CHK_ARGC(2, 2); name = argv[1]; ret = uffs_stat(name, &st); if (ret < 0) { MSGLN("Can't stat '%s'", name); return ret; } if (st.st_mode & US_IFDIR) { ret = uffs_rmdir(name); } else { ret = uffs_remove(name); } if (ret == 0) MSGLN("Delete '%s' succ.", name); else MSGLN("Delete '%s' fail!", name); return ret; }
static int dfs_uffs_unlink(struct dfs_filesystem* fs, const char* path) { int result; struct uffs_stat s; /* judge file type, dir is to be delete by uffs_rmdir, others by uffs_remove */ if (uffs_lstat(path, &s) < 0) { return uffs_result_to_dfs(uffs_get_error()); } switch(s.st_mode & US_IFMT) { case US_IFREG: result = uffs_remove(path); break; case US_IFDIR: result = uffs_rmdir(path); break; default: /* unknown file type */ return -1; } if (result < 0) return uffs_result_to_dfs(uffs_get_error()); return 0; }
static byte DeleteCmd(const unsigned char *cmd, const CLS1_ConstStdIOType *io) { /* precondition: cmd starts with "delete" */ char f_name[UFFS_PATHSIZE]; byte res = ERR_OK; if (UTIL1_ReadEscapedName(cmd + sizeof("delete"), (unsigned char*)f_name, sizeof(f_name), NULL, NULL, NULL) == ERR_OK) { res = uffs_remove( f_name ); if(uffs_get_error() == UEISDIR) { res = uffs_rmdir( f_name ); } } else { CmdUsageError(cmd, (unsigned char*) "delete fileName", io); res = ERR_FAILED; } return res; }