X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=xtrlock.git;a=blobdiff_plain;f=xtrlock.c;h=6117c6fadbc596805a9f6f32fded1fb5ae0c07b2;hp=7598560463f3ea104da3c34d3d8d342daee5d111;hb=6f8396e3a1607537a1cd6903d3d0f1a14e6f3476;hpb=4d5f368e87b2fcc17dfd4fdca112207c6cc7550e diff --git a/xtrlock.c b/xtrlock.c index 7598560..6117c6f 100644 --- a/xtrlock.c +++ b/xtrlock.c @@ -81,19 +81,27 @@ int main(int argc, char **argv){ Cursor cursor; Pixmap csr_source,csr_mask; XColor csr_fg, csr_bg, dummy, black; - int ret, screen, blank = 0; + int ret, screen, blank = 0, fork_after = 0; #ifdef SHADOW_PWD struct spwd *sp; #endif struct timeval tv; int tvt, gs; - if ((argc == 2) && (strcmp(argv[1], "-b") == 0)) { - blank = 1; - } else if (argc > 1) { - fprintf(stderr,"xtrlock (version %s); usage: xtrlock [-b]\n", - program_version); - exit(1); + while (argc > 1) { + if ((strcmp(argv[1], "-b") == 0)) { + blank = 1; + argc--; + argv++; + } else if ((strcmp(argv[1], "-f") == 0)) { + fork_after = 1; + argc--; + argv++; + } else { + fprintf(stderr,"xtrlock (version %s); usage: xtrlock [-b] [-f]\n", + program_version); + exit(1); + } } errno=0; pw= getpwuid(getuid()); @@ -208,6 +216,17 @@ int main(int argc, char **argv){ exit(1); } + if (fork_after) { + pid_t pid = fork(); + if (pid < 0) { + fprintf(stderr,"xtrlock (version %s): cannot fork: %s\n", + program_version, strerror(errno)); + exit(1); + } else if (pid > 0) { + exit(0); + } + } + for (;;) { XNextEvent(display,&ev); switch (ev.type) {