int main (int argc, const char * const *argv, const char * const *envp) { int opt; int wtmp =0; progname =*argv; while ((opt =getopt(argc, argv, "wV")) != opteof) { switch(opt) { case 'w': wtmp =1; break; case 'V': strerr_warn1("$Id: cb399098f794012a7f5e6a3a7090b2d53b86c08c $", 0); case '?': usage(); } } argv +=optind; if (! argv || ! *argv) usage(); if (utmp_logout(*argv) == -1) strerr_die4x(111, WARNING, "unable to logout line ", *argv, " in utmp: no such entry"); if (wtmp) if (wtmp_logout(*argv) == -1) strerr_die4sys(111, WARNING, "unable to logout line ", *argv, " in wtmp: "); _exit(0); }
RETSIGTYPE cleanup (int signo ARG_UNUSED) { char *p; p = line + sizeof (PATH_DEV) - 1; #ifdef UTMPX utmp_logout (p); chmod (line, 0644); chown (line, 0, 0); #else if (logout (p)) logwtmp (p, "", ""); chmod (line, 0666); chown (line, 0, 0); *p = 'p'; chmod (line, 0666); chown (line, 0, 0); #endif shutdown (netf, 2); exit (1); }