| version 1.5.20.2, 2017/10/08 21:58:47 | version 1.5.20.3, 2017/10/08 22:28:26 | 
| Line 126  mkevent(struct kevent *chg, struct kevent *evt) | Line 126  mkevent(struct kevent *chg, struct kevent *evt) | 
 | } | } | 
 | VERB(3) printf("Created lock file %s\n", szSess); | VERB(3) printf("Created lock file %s\n", szSess); | 
 |  |  | 
| kq = kqueue(); | if (chg && evt) { | 
| if (kq == -1) { | kq = kqueue(); | 
| printf("Error:: can`t execute safe mount #%d - %s\n", errno, strerror(errno)); | if (kq == -1) { | 
| close(f); | printf("Error:: can`t execute safe mount #%d - %s\n", errno, strerror(errno)); | 
| unlink(szSess); | close(f); | 
| return -1; | unlink(szSess); | 
| } else { | return -1; | 
| memset(chg, 0, sizeof(struct kevent)); | } else { | 
| memset(evt, 0, sizeof(struct kevent)); | memset(chg, 0, sizeof(struct kevent)); | 
|  | memset(evt, 0, sizeof(struct kevent)); | 
 |  |  | 
| EV_SET(chg, f, EVFILT_VNODE, EV_ADD, NOTE_DELETE | NOTE_RENAME | NOTE_REVOKE, | EV_SET(chg, f, EVFILT_VNODE, EV_ADD, NOTE_DELETE | NOTE_RENAME | NOTE_REVOKE, | 
| 0, NULL); | 0, NULL); | 
|  | } | 
 | } | } | 
 |  |  | 
 | return f; | return f; | 
| Line 160  s_unlck() | Line 162  s_unlck() | 
 | if (access(szSLCK, F_OK)) | if (access(szSLCK, F_OK)) | 
 | return 1; | return 1; | 
 |  |  | 
| if (update(MNT_UPDATE | MNT_RDONLY) == -1) | if (access(szSess, F_OK) && update(MNT_UPDATE | MNT_RDONLY) == -1) | 
 | return 8; | return 8; | 
 |  |  | 
 | unlink(szSLCK); | unlink(szSLCK); | 
| Line 182  s_lck(const char *reason) | Line 184  s_lck(const char *reason) | 
 | f = open(szSLCK, O_CREAT | O_WRONLY | O_TRUNC, 0644); | f = open(szSLCK, O_CREAT | O_WRONLY | O_TRUNC, 0644); | 
 | if (f == -1) { | if (f == -1) { | 
 | printf("Error:: can`t service lock session #%d - %s\n", errno, strerror(errno)); | printf("Error:: can`t service lock session #%d - %s\n", errno, strerror(errno)); | 
| return -1; | return 5; | 
 | } else { | } else { | 
 | memset(szStr, 0, sizeof szStr); | memset(szStr, 0, sizeof szStr); | 
 | snprintf(szStr, sizeof szStr, "[%d] - %s", getpid(), reason); | snprintf(szStr, sizeof szStr, "[%d] - %s", getpid(), reason); | 
| Line 320  main(int argc, char **argv) | Line 322  main(int argc, char **argv) | 
 | VERB(5) printf("Info(5):: Go safe mount.\n"); | VERB(5) printf("Info(5):: Go safe mount.\n"); | 
 | setsid(); | setsid(); | 
 |  |  | 
| if (update(MNT_UPDATE) == -1) | if ((f = mkevent(&chg, &evt)) == -1) | 
 | return 4; | return 4; | 
 |  |  | 
| if ((f = mkevent(&chg, &evt)) == -1) | if (update(MNT_UPDATE) == -1) | 
 | return 5; | return 5; | 
 |  |  | 
 | if (Timeout) { | if (Timeout) { | 
| Line 361  main(int argc, char **argv) | Line 363  main(int argc, char **argv) | 
 | sigprocmask(SIG_BLOCK, &sig, &oldsig); | sigprocmask(SIG_BLOCK, &sig, &oldsig); | 
 | */ | */ | 
 |  |  | 
| if (update(MNT_UPDATE) == -1) | if ((f = mkevent(NULL, NULL)) == -1) | 
 | return 4; | return 4; | 
 |  | else | 
 |  | close(f); | 
 |  |  | 
 |  | if (update(MNT_UPDATE) == -1) | 
 |  | return 5; | 
 |  |  | 
 | switch ((pid = vfork())) { | switch ((pid = vfork())) { | 
 | 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)); | 
| return 5; | stat = 3; | 
|  | break; | 
 | case 0: | case 0: | 
 | VERB(5) printf("Go to running process %s\n", *argv); | VERB(5) printf("Go to running process %s\n", *argv); | 
 | if (chroot(AIT_GET_STR(&Chroot)) == -1) { | if (chroot(AIT_GET_STR(&Chroot)) == -1) { | 
| Line 381  main(int argc, char **argv) | Line 389  main(int argc, char **argv) | 
 | /* chdir("/"); */ | /* chdir("/"); */ | 
 | execvp(*argv, argv); | execvp(*argv, argv); | 
 | } | } | 
| exit(127); | _exit(127); | 
 | break; | break; | 
 | default: | default: | 
 | waitpid(pid, &stat, 0); | waitpid(pid, &stat, 0); | 
 |  | stat = WEXITSTATUS(stat); | 
 | VERB(3) printf("Return code: %d\n", stat); | VERB(3) printf("Return code: %d\n", stat); | 
 | if (stat == 32512) |  | 
 | stat = 127; |  | 
 |  |  | 
 | if (access(szSLCK, F_OK) && update(MNT_UPDATE | MNT_RDONLY) == -1) | if (access(szSLCK, F_OK) && update(MNT_UPDATE | MNT_RDONLY) == -1) | 
| return 8; | stat = 8; | 
|  | break; | 
 | } | } | 
 |  |  | 
 |  | unlink(szSess); | 
 | } | } | 
 |  |  | 
 | return stat; | return stat; |