array version for unlink

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1410 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 17 years ago
parent 09dbeb1855
commit d682e68fcd

@ -61,6 +61,7 @@ DSMAction* SCSysModule::getAction(const string& from_str) {
DEF_CMD("sys.mkdirRecursive", SCMkDirRecursiveAction);
DEF_CMD("sys.rename", SCRenameAction);
DEF_CMD("sys.unlink", SCUnlinkAction);
DEF_CMD("sys.unlinkArray", SCUnlinkArrayAction);
return NULL;
}
@ -190,3 +191,30 @@ EXEC_ACTION_START(SCUnlinkAction) {
sc_sess->SET_ERRNO(DSM_ERRNO_FILE);
}
} EXEC_ACTION_END;
CONST_ACTION_2P(SCUnlinkArrayAction, ',', true);
EXEC_ACTION_START(SCUnlinkArrayAction) {
string fname = resolveVars(par1, sess, sc_sess, event_params);
if (fname.empty())
return false;
string prefix = resolveVars(par2, sess, sc_sess, event_params);
unsigned int arr_size = 0;
if (str2i(sc_sess->var[fname + "_size"], arr_size)) {
ERROR("_size not present/parseable '$%s'\n", sc_sess->var[fname + "_size"].c_str());
sc_sess->SET_ERRNO(DSM_ERRNO_UNKNOWN_ARG);
return false;
}
sc_sess->SET_ERRNO(DSM_ERRNO_OK);
for (unsigned int i=0;i<arr_size;i++) {
string file_fullname = prefix + '/' + sc_sess->var[fname + "_"+int2str(i)];
DBG("unlinking '%s'\n", file_fullname.c_str());
if (unlink(file_fullname.c_str())) {
DBG("unlink '%s' failed: '%s'\n",
file_fullname.c_str(), strerror(errno));
sc_sess->SET_ERRNO(DSM_ERRNO_FILE);
}
}
} EXEC_ACTION_END;

@ -44,4 +44,5 @@ DEF_ACTION_1P(SCMkDirAction);
DEF_ACTION_1P(SCMkDirRecursiveAction);
DEF_ACTION_2P(SCRenameAction);
DEF_ACTION_1P(SCUnlinkAction);
DEF_ACTION_2P(SCUnlinkArrayAction);
#endif

Loading…
Cancel
Save