/** 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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
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;
}