Diff for /embedtools/src/cfexec.c between versions 1.1 and 1.2.2.1

version 1.1, 2009/11/12 10:35:55 version 1.2.2.1, 2011/06/13 20:04:12
Line 15  char szUser[MAX_STR], szMount[MAXPATHLEN], szDev[MAXPA Line 15  char szUser[MAX_STR], szMount[MAXPATHLEN], szDev[MAXPA
      szChroot[MAXPATHLEN], szSess[MAXPATHLEN], szConfig[MAXPATHLEN];       szChroot[MAXPATHLEN], szSess[MAXPATHLEN], szConfig[MAXPATHLEN];
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
   
   
 static void Usage()  static void Usage()
 {  {
   
Line 24  static void Usage() Line 25  static void Usage()
                 "\t-v\t\tVerbose ...\n"                  "\t-v\t\tVerbose ...\n"
                 "\t-c <dir>\tAfter execute chroot to dir [default=/]\n"                  "\t-c <dir>\tAfter execute chroot to dir [default=/]\n"
                 "\t-u <user>\tAfter execute suid to user [default=root]\n"                  "\t-u <user>\tAfter execute suid to user [default=root]\n"
                "\t-d <dev>\tOther device [default=/dev/ufs/AITBSDonCF]\n"                "\t-d <dev>\tOther device [default=/dev/ufs/elwix]\n"
                 "\t-m <mnt>\tOther mount dir [default=/cf]\n"                  "\t-m <mnt>\tOther mount dir [default=/cf]\n"
                 "\t-t <sec>\tTimeout for autolock mount dir after seconds [default=300]\n"                  "\t-t <sec>\tTimeout for autolock mount dir after seconds [default=300]\n"
                 "\n", compiled, compiledby, compilehost);                  "\n", compiled, compiledby, compilehost);
Line 36  static int update(int flags) Line 37  static int update(int flags)
   
         memset(&mnt, 0, sizeof mnt);          memset(&mnt, 0, sizeof mnt);
         mnt.fspec = szDev;          mnt.fspec = szDev;
   #ifdef __NetBSD__
           if (mount("ufs", szMount, flags, &mnt, sizeof mnt) == -1) {
   #else
         if (mount("ufs", szMount, flags, &mnt) == -1) {          if (mount("ufs", szMount, flags, &mnt) == -1) {
   #endif
                 printf("Error:: can`t update mount %s #%d - %s\n", szMount, errno, strerror(errno));                  printf("Error:: can`t update mount %s #%d - %s\n", szMount, errno, strerror(errno));
                 return -1;                  return -1;
         }          }
Line 87  static int mkevent(struct kevent *chg, struct kevent * Line 92  static int mkevent(struct kevent *chg, struct kevent *
                 memset(chg, 0, sizeof(struct kevent));                  memset(chg, 0, sizeof(struct kevent));
                 memset(evt, 0, sizeof(struct kevent));                  memset(evt, 0, sizeof(struct kevent));
   
                EV_SET(chg, f, EVFILT_VNODE, EV_ADD, NOTE_DELETE | NOTE_RENAME | NOTE_REVOKE, 0, NULL);                EV_SET(chg, f, EVFILT_VNODE, EV_ADD, NOTE_DELETE | NOTE_RENAME | NOTE_REVOKE, 0, (intptr_t) NULL);
         }          }
   
         return f;          return f;
Line 98  static int mkevent(struct kevent *chg, struct kevent * Line 103  static int mkevent(struct kevent *chg, struct kevent *
 int main(int argc, char **argv)  int main(int argc, char **argv)
 {  {
         char ch;          char ch;
        const char *err;        const char *err = NULL;
         struct kevent chg, evt;          struct kevent chg, evt;
         struct timespec ts;          struct timespec ts;
         pid_t pid;          pid_t pid;
Line 109  int main(int argc, char **argv) Line 114  int main(int argc, char **argv)
         // Load variables from config if exists          // Load variables from config if exists
         if (!LoadConfig(szConfig, &cfg)) {          if (!LoadConfig(szConfig, &cfg)) {
                 cfg_LoadAttribute(&cfg, CFG("cfexec"), CFG("timeout"), CFG(szUser), MAX_STR, DEFAULT_TIMEOUT);                  cfg_LoadAttribute(&cfg, CFG("cfexec"), CFG("timeout"), CFG(szUser), MAX_STR, DEFAULT_TIMEOUT);
                Timeout = strtonum(szUser, 1, 3600, &err);#ifndef HAVE_STRTONUM
                if (!Timeout) {                Timeout = (int) strtol(szUser, NULL, 0);
 #else
                 Timeout = strtonum(szUser, 0, 3600, &err);
 #endif
                 if (!Timeout && err) {
                         printf("Error:: in seconds for timeout %s - %s\n", optarg, err);                          printf("Error:: in seconds for timeout %s - %s\n", optarg, err);
                         UnloadConfig(&cfg);                          UnloadConfig(&cfg);
                         return 1;                          return 1;
Line 148  int main(int argc, char **argv) Line 157  int main(int argc, char **argv)
                                 strlcpy(szMount, optarg, MAXPATHLEN);                                  strlcpy(szMount, optarg, MAXPATHLEN);
                                 break;                                  break;
                         case 't':                          case 't':
                                Timeout = strtonum(optarg, 1, 3600, &err);#ifndef HAVE_STRTONUM
                                if (!Timeout) {                                Timeout = (int) strtol(szUser, NULL, 0);
 #else
                                 Timeout = strtonum(optarg, 0, 3600, &err);
 #endif
                                 if (!Timeout && err) {
                                         printf("Error:: in seconds for timeout %s - %s\n",                                          printf("Error:: in seconds for timeout %s - %s\n",
                                                         optarg, err);                                                          optarg, err);
                                         return 1;                                          return 1;
Line 190  int main(int argc, char **argv) Line 203  int main(int argc, char **argv)
                                 if ((f = mkevent(&chg, &evt)) == -1)                                  if ((f = mkevent(&chg, &evt)) == -1)
                                         return 5;                                          return 5;
   
                                memset(&ts, 0, sizeof ts);                                if (Timeout) {
                                ts.tv_sec = Timeout;                                        memset(&ts, 0, sizeof ts);
                                switch (kevent(kq, &chg, 1, &evt, 1, &ts)) {                                        ts.tv_sec = Timeout;
                                 }
                                 switch (kevent(kq, &chg, 1, &evt, 1, !Timeout ? NULL : &ts)) {
                                         case -1:                                          case -1:
                                                 printf("Error:: can`t execute safe mount #%d - %s\n",                                                   printf("Error:: can`t execute safe mount #%d - %s\n", 
                                                                 errno, strerror(errno));                                                                  errno, strerror(errno));
Line 236  int main(int argc, char **argv) Line 251  int main(int argc, char **argv)
                                         if (strncmp(szUser, "root", 5))                                          if (strncmp(szUser, "root", 5))
                                                 setuser();                                                  setuser();
   
                                        chdir("/");                                        /* chdir("/"); */
                                         execvp(*argv, argv);                                          execvp(*argv, argv);
                                 }                                  }
                                 _exit(127);                                  _exit(127);

Removed from v.1.1  
changed lines
  Added in v.1.2.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>