58
52
Bool handle_clientmessage (saver_info *si, XEvent *e, Bool u) { return False; }
59
53
int BadWindow_ehandler (Display *dpy, XErrorEvent *error) { exit(1); }
60
54
const char *signal_name(int signal) { return "???"; }
61
void restore_real_vroot (saver_info *si) {}
55
Bool restore_real_vroot (saver_info *si) { return False; }
62
56
void store_saver_status (saver_info *si) {}
63
57
void saver_exit (saver_info *si, int status, const char *core) { exit(status);}
64
int move_mouse_grab (saver_info *si, Window to, Cursor cursor) { return 0; }
58
int move_mouse_grab (saver_info *si, Window to, Cursor c, int ts) { return 0; }
59
int mouse_screen (saver_info *si) { return 0; }
60
void check_for_leaks (const char *where) { }
61
void exec_command (const char *shell, const char *command, int nice) { }
62
void shutdown_stderr (saver_info *si) { }
66
64
const char *blurb(void) { return progname; }
67
65
Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS;
124
132
if (*s) strcpy (progname, s+1);
135
if (argc != 2) goto USAGE;
136
else if (!strcmp (argv[1], "pass")) which = PASS;
137
else if (!strcmp (argv[1], "splash")) which = SPLASH;
138
else if (!strcmp (argv[1], "tty")) which = TTY;
142
fprintf (stderr, "usage: %s [ pass | splash | tty ]\n", progname);
127
146
/* before hack_uid() for proper permissions */
128
147
lock_priv_init (argc, argv, True);
132
if (! lock_init (argc, argv, si->prefs.verbose_p))
151
if (! lock_init (argc, argv, True))
134
153
si->locking_disabled_p = True;
135
154
si->nolock_reason = "error getting password";
138
157
progclass = "XScreenSaver";
140
#if (WHICH != WHICH_TTY)
141
toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
142
&argc, argv, fallback,
145
si->dpy = XtDisplay (toplevel_shell);
146
p->db = XtDatabase (si->dpy);
147
si->default_screen->toplevel_shell = toplevel_shell;
148
si->default_screen->screen = XtScreen(toplevel_shell);
149
si->default_screen->default_visual =
150
si->default_screen->current_visual =
151
DefaultVisualOfScreen(si->default_screen->screen);
152
si->default_screen->screensaver_window =
153
RootWindowOfScreen(si->default_screen->screen);
154
si->default_screen->current_depth =
155
visual_depth(si->default_screen->screen,
156
si->default_screen->current_visual);
159
XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
161
load_init_file (&si->prefs);
163
#endif /* (WHICH != 2) */
161
toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
162
&argc, argv, fallback,
165
si->dpy = XtDisplay (toplevel_shell);
166
p->db = XtDatabase (si->dpy);
167
si->default_screen->toplevel_shell = toplevel_shell;
168
si->default_screen->screen = XtScreen(toplevel_shell);
169
si->default_screen->default_visual =
170
si->default_screen->current_visual =
171
DefaultVisualOfScreen(si->default_screen->screen);
172
si->default_screen->screensaver_window =
173
RootWindowOfScreen(si->default_screen->screen);
174
si->default_screen->current_depth =
175
visual_depth(si->default_screen->screen,
176
si->default_screen->current_visual);
179
XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
181
load_init_file (&si->prefs);
165
184
p->verbose_p = True;
169
#if WHICH == WHICH_PASS
171
fprintf (stderr, "%s: password correct\n", progname);
191
fprintf (stderr, "%s: password correct\n", progname);
193
fprintf (stderr, "%s: password INCORRECT!\n", progname);
195
XSync(si->dpy, False);
198
else if (which == SPLASH)
201
make_splash_dialog (si);
202
XtAppAddTimeOut (si->app, p->splash_duration + 1000,
203
idle_timer, (XtPointer) si);
204
while (si->splash_dialog)
206
XtAppNextEvent (si->app, &event);
207
if (event.xany.window == si->splash_dialog)
208
handle_splash_event (si, &event);
209
XtDispatchEvent (&event);
211
XSync (si->dpy, False);
214
else if (which == TTY)
218
struct passwd *p = getpwuid (getuid ());
219
printf ("\n%s: %s's password: ", progname, p->pw_name);
221
pass = fgets (buf, sizeof(buf)-1, stdin);
224
if (pass[strlen(pass)-1] == '\n')
225
pass[strlen(pass)-1] = 0;
227
if (passwd_valid_p (pass, True))
228
printf ("%s: Ok!\n", progname);
230
printf ("%s: Wrong!\n", progname);
173
fprintf (stderr, "%s: password INCORRECT!\n", progname);
175
XSync(si->dpy, False);
177
#elif WHICH == WHICH_SPLASH
180
make_splash_dialog (si);
181
XtAppAddTimeOut (si->app, p->splash_duration + 1000,
182
idle_timer, (XtPointer) si);
183
while (si->splash_dialog)
185
XtAppNextEvent (si->app, &event);
186
if (event.xany.window == si->splash_dialog)
187
handle_splash_event (si, &event);
188
XtDispatchEvent (&event);
190
XSync (si->dpy, False);
193
#elif WHICH == WHICH_TTY
197
struct passwd *p = getpwuid (getuid ());
198
printf ("\n%s: %s's password: ", progname, p->pw_name);
200
pass = fgets (buf, sizeof(buf)-1, stdin);
203
if (pass[strlen(pass)-1] == '\n')
204
pass[strlen(pass)-1] = 0;
206
if (passwd_valid_p (pass, True))
207
printf ("%s: Ok!\n", progname);
209
printf ("%s: Wrong!\n", progname);
212
# error bogus WHICH value!