~ubuntu-branches/ubuntu/breezy/xscreensaver/breezy

« back to all changes in this revision

Viewing changes to driver/test-passwd.c

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2005-10-11 21:00:42 UTC
  • mfrom: (2.1.1 sarge)
  • Revision ID: james.westby@ubuntu.com-20051011210042-u7q6zslgevdxspr3
Tags: 4.21-4ubuntu17
updated pt_BR again, fixed to UTF-8 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* xscreensaver, Copyright (c) 1998, 2001 Jamie Zawinski <jwz@jwz.org>
 
1
/* xscreensaver, Copyright (c) 1998-2005 Jamie Zawinski <jwz@jwz.org>
2
2
 *
3
3
 * Permission to use, copy, modify, distribute, and sell this software and its
4
4
 * documentation for any purpose is hereby granted without fee, provided that
14
14
   itself.
15
15
 */
16
16
 
17
 
#define WHICH_PASS   100
18
 
#define WHICH_SPLASH 101
19
 
#define WHICH_TTY    102
20
 
 
21
 
#define WHICH        WHICH_PASS
22
 
 
23
17
#ifdef HAVE_CONFIG_H
24
18
# include "config.h"
25
19
#endif
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) { }
65
63
 
66
64
const char *blurb(void) { return progname; }
67
65
Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS;
70
68
get_screen_viewport (saver_screen_info *ssi,
71
69
                     int *x_ret, int *y_ret,
72
70
                     int *w_ret, int *h_ret,
 
71
                     int tx, int ty,
73
72
                     Bool verbose_p)
74
73
{
75
74
  *x_ret = 0;
76
75
  *y_ret = 0;
77
76
  *w_ret = WidthOfScreen (ssi->screen);
78
77
  *h_ret = HeightOfScreen (ssi->screen);
 
78
 
 
79
  if (*w_ret > *h_ret * 2) *w_ret /= 2;  /* xinerama kludge */
79
80
}
80
81
 
81
82
 
91
92
}
92
93
 
93
94
 
 
95
#ifdef __GNUC__
 
96
 __extension__     /* shut up about "string length is greater than the length
 
97
                      ISO C89 compilers are required to support" when including
 
98
                      the .ad file... */
 
99
#endif
 
100
 
94
101
static char *fallback[] = {
95
102
#include "XScreenSaver_ad.h"
96
103
 0
99
106
int
100
107
main (int argc, char **argv)
101
108
{
 
109
  enum { PASS, SPLASH, TTY } which;
102
110
  Widget toplevel_shell = 0;
103
111
  saver_screen_info ssip;
104
112
  saver_info sip;
124
132
    if (*s) strcpy (progname, s+1);
125
133
  }
126
134
 
 
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;
 
139
  else
 
140
    {
 
141
    USAGE:
 
142
      fprintf (stderr, "usage: %s [ pass | splash | tty ]\n", progname);
 
143
      exit (1);
 
144
    }
 
145
 
127
146
  /* before hack_uid() for proper permissions */
128
147
  lock_priv_init (argc, argv, True);
129
148
 
130
149
  hack_uid (si);
131
150
 
132
 
  if (! lock_init (argc, argv, si->prefs.verbose_p))
 
151
  if (! lock_init (argc, argv, True))
133
152
    {
134
153
      si->locking_disabled_p = True;
135
154
      si->nolock_reason = "error getting password";
137
156
 
138
157
  progclass = "XScreenSaver";
139
158
 
140
 
#if (WHICH != WHICH_TTY)
141
 
  toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
142
 
                                    &argc, argv, fallback,
143
 
                                    0, 0);
144
 
 
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);
157
 
 
158
 
  db = p->db;
159
 
  XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
160
 
 
161
 
  load_init_file (&si->prefs);
162
 
 
163
 
#endif /* (WHICH != 2) */
 
159
  if (which != TTY)
 
160
    {
 
161
      toplevel_shell = XtAppInitialize (&si->app, progclass, 0, 0,
 
162
                                        &argc, argv, fallback,
 
163
                                        0, 0);
 
164
 
 
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);
 
177
 
 
178
      db = p->db;
 
179
      XtGetApplicationNameAndClass (si->dpy, &progname, &progclass);
 
180
 
 
181
      load_init_file (&si->prefs);
 
182
    }
164
183
 
165
184
  p->verbose_p = True;
166
185
 
167
186
  while (1)
168
187
    {
169
 
#if WHICH == WHICH_PASS
170
 
      if (unlock_p (si))
171
 
        fprintf (stderr, "%s: password correct\n", progname);
 
188
      if (which == PASS)
 
189
        {
 
190
          if (unlock_p (si))
 
191
            fprintf (stderr, "%s: password correct\n", progname);
 
192
          else
 
193
            fprintf (stderr, "%s: password INCORRECT!\n", progname);
 
194
 
 
195
          XSync(si->dpy, False);
 
196
          sleep (3);
 
197
        }
 
198
      else if (which == SPLASH)
 
199
        {
 
200
          XEvent event;
 
201
          make_splash_dialog (si);
 
202
          XtAppAddTimeOut (si->app, p->splash_duration + 1000,
 
203
                           idle_timer, (XtPointer) si);
 
204
          while (si->splash_dialog)
 
205
            {
 
206
              XtAppNextEvent (si->app, &event);
 
207
              if (event.xany.window == si->splash_dialog)
 
208
                handle_splash_event (si, &event);
 
209
              XtDispatchEvent (&event);
 
210
            }
 
211
          XSync (si->dpy, False);
 
212
          sleep (1);
 
213
        }
 
214
      else if (which == TTY)
 
215
        {
 
216
          char *pass;
 
217
          char buf[255];
 
218
          struct passwd *p = getpwuid (getuid ());
 
219
          printf ("\n%s: %s's password: ", progname, p->pw_name);
 
220
 
 
221
          pass = fgets (buf, sizeof(buf)-1, stdin);
 
222
          if (!pass || !*pass)
 
223
            exit (0);
 
224
          if (pass[strlen(pass)-1] == '\n')
 
225
            pass[strlen(pass)-1] = 0;
 
226
 
 
227
          if (passwd_valid_p (pass, True))
 
228
            printf ("%s: Ok!\n", progname);
 
229
          else
 
230
            printf ("%s: Wrong!\n", progname);
 
231
        }
172
232
      else
173
 
        fprintf (stderr, "%s: password INCORRECT!\n", progname);
174
 
 
175
 
      XSync(si->dpy, False);
176
 
      sleep (3);
177
 
#elif WHICH == WHICH_SPLASH
178
 
      {
179
 
        XEvent event;
180
 
        make_splash_dialog (si);
181
 
        XtAppAddTimeOut (si->app, p->splash_duration + 1000,
182
 
                         idle_timer, (XtPointer) si);
183
 
        while (si->splash_dialog)
184
 
          {
185
 
            XtAppNextEvent (si->app, &event);
186
 
            if (event.xany.window == si->splash_dialog)
187
 
              handle_splash_event (si, &event);
188
 
            XtDispatchEvent (&event);
189
 
          }
190
 
        XSync (si->dpy, False);
191
 
        sleep (1);
192
 
      }
193
 
#elif WHICH == WHICH_TTY
194
 
      {
195
 
        char *pass;
196
 
        char buf[255];
197
 
        struct passwd *p = getpwuid (getuid ());
198
 
        printf ("\n%s: %s's password: ", progname, p->pw_name);
199
 
 
200
 
        pass = fgets (buf, sizeof(buf)-1, stdin);
201
 
        if (!pass || !*pass)
202
 
          exit (0);
203
 
        if (pass[strlen(pass)-1] == '\n')
204
 
          pass[strlen(pass)-1] = 0;
205
 
 
206
 
        if (passwd_valid_p (pass, True))
207
 
          printf ("%s: Ok!\n", progname);
208
 
        else
209
 
          printf ("%s: Wrong!\n", progname);
210
 
      }
211
 
#else
212
 
# error bogus WHICH value!
213
 
#endif
 
233
        abort();
214
234
    }
215
235
}