+ if (which == PASS)
+ {
+ if (unlock_p (si))
+ fprintf (stderr, "%s: password correct\n", progname);
+ else
+ fprintf (stderr, "%s: password INCORRECT!\n", progname);
+
+ XSync(si->dpy, False);
+ sleep (3);
+ }
+ else if (which == SPLASH)
+ {
+ XEvent event;
+ make_splash_dialog (si);
+ XtAppAddTimeOut (si->app, p->splash_duration + 1000,
+ idle_timer, (XtPointer) si);
+ while (si->splash_dialog)
+ {
+ XtAppNextEvent (si->app, &event);
+ if (event.xany.window == si->splash_dialog)
+ handle_splash_event (si, &event);
+ XtDispatchEvent (&event);
+ }
+ XSync (si->dpy, False);
+ sleep (1);
+ }
+ else if (which == TTY)
+ {
+ char *pass;
+ char buf[255];
+ struct passwd *p = getpwuid (getuid ());
+ printf ("\n%s: %s's password: ", progname, p->pw_name);
+
+ pass = fgets (buf, sizeof(buf)-1, stdin);
+ if (!pass || !*pass)
+ exit (0);
+ if (pass[strlen(pass)-1] == '\n')
+ pass[strlen(pass)-1] = 0;
+
+ if (passwd_valid_p (pass, True))
+ printf ("%s: Ok!\n", progname);
+ else
+ printf ("%s: Wrong!\n", progname);
+ }