From d6fa387868a0a784f5dda4bd332d03b5a538c14c Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Mon, 12 Jun 2017 15:35:15 +0200 Subject: [PATCH] mufs: implement mufs_rmdir() --- include/fs/mufs.h | 1 + source/fs/mufs/dir.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/fs/mufs.h b/include/fs/mufs.h index 2c55e09..1fc93ac 100644 --- a/include/fs/mufs.h +++ b/include/fs/mufs.h @@ -48,6 +48,7 @@ struct mufs_dir *mufs_opendir(struct mufs *fs, const char *path); void mufs_closedir(struct mufs_dir *dir); int mufs_readdir(struct mufs_dir *dir, struct mufs_dirent *dirent); int mufs_mkdir(struct mufs *fs, const char *path); +int mufs_rmdir(struct mufs *fs, const char *path); int mufs_create(struct mufs *fs, const char *path); struct mufs_file *mufs_open(struct mufs *fs, const char *path, int mode); diff --git a/source/fs/mufs/dir.c b/source/fs/mufs/dir.c index c999fad..f937ce9 100644 --- a/source/fs/mufs/dir.c +++ b/source/fs/mufs/dir.c @@ -288,3 +288,16 @@ int mufs_mkdir(struct mufs *fs, const char *path) { return mufs_mkpath(fs, path, MUFS_DIR); } + +int mufs_rmdir(struct mufs *fs, const char *path) +{ + struct mufs_stat stat; + + if (mufs_stat(fs, path, &stat) < 0) + return -1; + + if (stat.type != MUFS_DIR || stat.file_size != 0) + return -1; + + return mufs_rmpath(fs, path); +}