Added mkdir/rmdir support to file module.
This commit is contained in:
parent
ccb3b5002d
commit
55dbcc79d5
|
@ -11,6 +11,7 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
static const char *default_fs_label =
|
static const char *default_fs_label =
|
||||||
((CONFIG_NODEMCU_DEFAULT_SPIFFS_LABEL &&
|
((CONFIG_NODEMCU_DEFAULT_SPIFFS_LABEL &&
|
||||||
|
@ -129,6 +130,29 @@ static int file_fsinfo( lua_State* L )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int file_mkdir( lua_State *L )
|
||||||
|
{
|
||||||
|
const char *name = luaL_checkstring(L, 1);
|
||||||
|
unsigned mode = luaL_optint(L, 2, 0777);
|
||||||
|
if (mkdir(name, mode) != 0) {
|
||||||
|
return
|
||||||
|
luaL_error(L, "failed to create directory '%s'; code %d", name, errno);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int file_rmdir( lua_State *L )
|
||||||
|
{
|
||||||
|
const char *name = luaL_checkstring(L, 1);
|
||||||
|
if (rmdir(name) != 0) {
|
||||||
|
return
|
||||||
|
luaL_error(L, "failed to remove directory '%s'; code %d", name, errno);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Module function map
|
// Module function map
|
||||||
LROT_BEGIN(file, NULL, 0)
|
LROT_BEGIN(file, NULL, 0)
|
||||||
LROT_FUNCENTRY( list, file_list )
|
LROT_FUNCENTRY( list, file_list )
|
||||||
|
@ -137,6 +161,8 @@ LROT_BEGIN(file, NULL, 0)
|
||||||
LROT_FUNCENTRY( rename, file_rename )
|
LROT_FUNCENTRY( rename, file_rename )
|
||||||
LROT_FUNCENTRY( exists, file_exists )
|
LROT_FUNCENTRY( exists, file_exists )
|
||||||
LROT_FUNCENTRY( fsinfo, file_fsinfo )
|
LROT_FUNCENTRY( fsinfo, file_fsinfo )
|
||||||
|
LROT_FUNCENTRY( mkdir, file_mkdir )
|
||||||
|
LROT_FUNCENTRY( rmdir, file_rmdir )
|
||||||
LROT_END(file, NULL, 0)
|
LROT_END(file, NULL, 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,39 @@ for k,v in pairs(l) do
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## file.mkdir()
|
||||||
|
|
||||||
|
Creates a directory, provided the underlying file system supports directories. SPIFFS does not, but FAT (which you may have on an attached SD card) does.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`file.mkdir(path [, mode])
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `path` the full path name of the directory to create. E.g. "/SD0/MYDIR".
|
||||||
|
- `mode` optional, only used for file systems which use mode permissions. Defaults to 0777 (octal).
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
||||||
|
Throws an error if the directory could not be created. Error code 134 (at the
|
||||||
|
time of writing) indicates that the filesystem at the given path does not
|
||||||
|
support directories.
|
||||||
|
|
||||||
|
## file.rmdir()
|
||||||
|
|
||||||
|
Removes an empty directory, provided the underlying file system supports directories. SPIFFS does not, but FAT (which you may have on an attached SD card) does.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`file.rmdir(path)`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `path` the path to the directory to remove. The directory must be empty.
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
||||||
|
Throws an error if the directory could not be removed.
|
||||||
|
|
||||||
## file.remove()
|
## file.remove()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue