diff --git a/apps/dsm/mods/mod_sys/ModSys.cpp b/apps/dsm/mods/mod_sys/ModSys.cpp index 1210422e..c7583068 100644 --- a/apps/dsm/mods/mod_sys/ModSys.cpp +++ b/apps/dsm/mods/mod_sys/ModSys.cpp @@ -60,6 +60,7 @@ DSMAction* SCSysModule::getAction(const string& from_str) { DEF_CMD("sys.mkdir", SCMkDirAction); DEF_CMD("sys.mkdirRecursive", SCMkDirRecursiveAction); DEF_CMD("sys.rename", SCRenameAction); + DEF_CMD("sys.unlink", SCUnlinkAction); return NULL; } @@ -175,3 +176,17 @@ EXEC_ACTION_START(SCRenameAction) { } } EXEC_ACTION_END; + +EXEC_ACTION_START(SCUnlinkAction) { + string fname = resolveVars(arg, sess, sc_sess, event_params); + if (fname.empty()) + return false; + + if (!unlink(fname.c_str())) { + sc_sess->SET_ERRNO(DSM_ERRNO_OK); + } else { + DBG("unlink '%s' failed: '%s'\n", + fname.c_str(), strerror(errno)); + sc_sess->SET_ERRNO(DSM_ERRNO_FILE); + } +} EXEC_ACTION_END; diff --git a/apps/dsm/mods/mod_sys/ModSys.h b/apps/dsm/mods/mod_sys/ModSys.h index 34f3173e..951e5b84 100644 --- a/apps/dsm/mods/mod_sys/ModSys.h +++ b/apps/dsm/mods/mod_sys/ModSys.h @@ -43,5 +43,5 @@ DEF_SCCondition(FileExistsCondition); DEF_ACTION_1P(SCMkDirAction); DEF_ACTION_1P(SCMkDirRecursiveAction); DEF_ACTION_2P(SCRenameAction); - +DEF_ACTION_1P(SCUnlinkAction); #endif diff --git a/apps/dsm/mods/mod_sys/Readme.mod_sys.txt b/apps/dsm/mods/mod_sys/Readme.mod_sys.txt index dcdb5d81..8bc70e32 100644 --- a/apps/dsm/mods/mod_sys/Readme.mod_sys.txt +++ b/apps/dsm/mods/mod_sys/Readme.mod_sys.txt @@ -1,6 +1,8 @@ Actions: sys.mkdir(string dirname) sys.mkdirRecursive(string dirname) + sys.rename(string from, string to) + sys.unlink(string filename) Conditions: sys.file_exists(string fname)