--- embedtools/src/cfexec.c 2009/11/12 10:35:55 1.1 +++ embedtools/src/cfexec.c 2011/06/08 12:45:41 1.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: cfexec.c,v 1.1 2009/11/12 10:35:55 misho Exp $ + * $Id: cfexec.c,v 1.2 2011/06/08 12:45:41 misho Exp $ * *************************************************************************/ #include "global.h" @@ -15,6 +15,7 @@ char szUser[MAX_STR], szMount[MAXPATHLEN], szDev[MAXPA szChroot[MAXPATHLEN], szSess[MAXPATHLEN], szConfig[MAXPATHLEN]; extern char compiled[], compiledby[], compilehost[]; + static void Usage() { @@ -24,7 +25,7 @@ static void Usage() "\t-v\t\tVerbose ...\n" "\t-c \tAfter execute chroot to dir [default=/]\n" "\t-u \tAfter execute suid to user [default=root]\n" - "\t-d \tOther device [default=/dev/ufs/AITBSDonCF]\n" + "\t-d \tOther device [default=/dev/ufs/elwix]\n" "\t-m \tOther mount dir [default=/cf]\n" "\t-t \tTimeout for autolock mount dir after seconds [default=300]\n" "\n", compiled, compiledby, compilehost); @@ -109,8 +110,8 @@ int main(int argc, char **argv) // Load variables from config if exists if (!LoadConfig(szConfig, &cfg)) { cfg_LoadAttribute(&cfg, CFG("cfexec"), CFG("timeout"), CFG(szUser), MAX_STR, DEFAULT_TIMEOUT); - Timeout = strtonum(szUser, 1, 3600, &err); - if (!Timeout) { + Timeout = strtonum(szUser, 0, 3600, &err); + if (!Timeout && err) { printf("Error:: in seconds for timeout %s - %s\n", optarg, err); UnloadConfig(&cfg); return 1; @@ -148,8 +149,8 @@ int main(int argc, char **argv) strlcpy(szMount, optarg, MAXPATHLEN); break; case 't': - Timeout = strtonum(optarg, 1, 3600, &err); - if (!Timeout) { + Timeout = strtonum(optarg, 0, 3600, &err); + if (!Timeout && err) { printf("Error:: in seconds for timeout %s - %s\n", optarg, err); return 1; @@ -190,9 +191,11 @@ int main(int argc, char **argv) if ((f = mkevent(&chg, &evt)) == -1) return 5; - memset(&ts, 0, sizeof ts); - ts.tv_sec = Timeout; - switch (kevent(kq, &chg, 1, &evt, 1, &ts)) { + if (Timeout) { + memset(&ts, 0, sizeof ts); + ts.tv_sec = Timeout; + } + switch (kevent(kq, &chg, 1, &evt, 1, !Timeout ? NULL : &ts)) { case -1: printf("Error:: can`t execute safe mount #%d - %s\n", errno, strerror(errno)); @@ -236,7 +239,7 @@ int main(int argc, char **argv) if (strncmp(szUser, "root", 5)) setuser(); - chdir("/"); + /* chdir("/"); */ execvp(*argv, argv); } _exit(127);