open-src/app/xscreensaver/gtk-lock.patch
author Alan Coopersmith <Alan.Coopersmith@Sun.COM>
Wed, 10 May 2006 18:06:31 -0700
changeset 17 151bef9509d4
child 47 d59efbadf28b
permissions -rw-r--r--
6424349 prepare xscreensaver sources for OpenSolaris release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     1
/*
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     2
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     3
 *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     4
 * Permission is hereby granted, free of charge, to any person obtaining a
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     5
 * copy of this software and associated documentation files (the
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     6
 * "Software"), to deal in the Software without restriction, including
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     7
 * without limitation the rights to use, copy, modify, merge, publish,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     8
 * distribute, and/or sell copies of the Software, and to permit persons
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     9
 * to whom the Software is furnished to do so, provided that the above
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    10
 * copyright notice(s) and this permission notice appear in all copies of
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    11
 * the Software and that both the above copyright notice(s) and this
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    12
 * permission notice appear in supporting documentation.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    13
 *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    15
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    16
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    17
 * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    18
 * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    19
 * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    20
 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    21
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    22
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    23
 *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    24
 * Except as contained in this notice, the name of a copyright holder
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    25
 * shall not be used in advertising or otherwise to promote the sale, use
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    26
 * or other dealings in this Software without prior written authorization
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    27
 * of the copyright holder.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    28
 *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    29
 */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    30
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    31
Solaris uses the gtk unlock dialog program originally written by 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    32
Ximian & Wipro, in order to provide a dialog box that works with
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    33
the GNOME accessibility framework.   This was done as a fork of
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    34
the original xscreensaver because the maintainer would not allow
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    35
use of a toolkit in the lock dialog - he has since softened his
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    36
stance a bit, but this has not been presented to him to see if it
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    37
meets his requirements as spelled out at:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    38
	http://www.jwz.org/xscreensaver/toolkits.html
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    39
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    40
This file contains changes to the existing xscreensaver source to
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    41
enable that - the lock dialog itself is contained in the separate
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    42
file sun-src/driver/lock-Gtk.c.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    43
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    44
This file also contains changes to make the pam code in xscreensaver
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    45
act more like a correct pam client, allowing different interaction
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    46
models than just a single password for authentication.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    47
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    48
diff -urp -x '*~' config.h.in config.h.in
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    49
--- config.h.in	2002-05-28 17:44:37.000000000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    50
+++ config.h.in	2006-05-10 08:48:29.922847000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    51
@@ -147,6 +147,10 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    52
  */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    53
 #undef HAVE_GTK2
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    54
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    55
+/*  Define this to build the external lock dialog
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    56
+ */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    57
+#undef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    58
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    59
 /*  Define this if you have Gnome and want to build support for the 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    60
     xscreensaver control panel in the Gnome Control Center (gnomecc).
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    61
     (This is needed only with Gtk 1.x.)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    62
diff -urp -x '*~' configure.in configure.in
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    63
--- configure.in	2006-05-10 08:48:24.125209000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    64
+++ configure.in	2006-05-10 08:48:29.922219000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    65
@@ -1462,7 +1462,7 @@ if test "$enable_locking" = yes -a "$wit
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    66
   if test "$ac_cv_pam" = yes ; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    67
     have_pam=yes
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    68
     AC_DEFINE(HAVE_PAM)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    69
-    PASSWD_LIBS="${PASSWD_LIBS} -lpam"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    70
+    PASSWD_LIBS="${PASSWD_LIBS} -lcmd -lpam"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    71
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    72
     # libpam typically requires dlopen and dlsym.  On FreeBSD,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    73
     # those are in libc.  On Linux and Solaris, they're in libdl.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    74
@@ -1943,11 +1943,16 @@ if test "$with_gtk" = yes; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    75
     pkg_check_version  gmodule-2.0  2.0.0
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    76
     pkg_check_version   libxml-2.0  2.4.6
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    77
     pkg_check_version libglade-2.0  1.99.0
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    78
+    pkg_check_version    gconf-2.0  2.6.1
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    79
+    pkg_check_version libloginhelper-1.0 1.0
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    80
     have_gtk="$ok"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    81
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    82
     if test "$have_gtk" = yes; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    83
       have_gtk2=yes
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    84
       AC_DEFINE(HAVE_GTK2)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    85
+#--- Begin SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    86
+      AC_DEFINE(HAVE_XSCREENSAVER_LOCK)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    87
+#--- End SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    88
     else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    89
       if test -n "$ac_gtk_version_string" ; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    90
         gtk2_halfassed="$ac_gtk_version_string"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    91
@@ -3256,6 +3261,28 @@ if test "$have_gtk" = yes; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    92
   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    93
 fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    94
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    95
+#--- Begin SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    96
+PREFERRED_LOCK_PROGRAM=
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    97
+ALL_LOCK_PROGRAMS=
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    98
+LOCK_PROGRAM=
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    99
+if test "$have_gtk2" = yes; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   100
+  PREFERRED_LOCK_PROGRAM=xscreensaver-lock-Gtk
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   101
+  ALL_LOCK_PROGRAMS="$PREFERRED_LOCK_PROGRAM $ALL_LOCK_PROGRAMS"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   102
+  LOCK_PROGRAM=xscreensaver-lock
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   103
+fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   104
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   105
+if test -r driver/sunlogo.xpm ; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   106
+	XPM_LOGO_FILE=sunlogo.xpm
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   107
+	XPM_LOGO_NAME=sunlogo_xpm
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   108
+else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   109
+	XPM_LOGO_FILE=../utils/images/logo-180.xpm
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   110
+	XPM_LOGO_NAME=logo_180_xpm
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   111
+fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   112
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   113
+AC_SUBST([XPM_LOGO_FILE])
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   114
+AC_SUBST([XPM_LOGO_NAME])
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   115
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   116
+#--- End SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   117
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   118
 if test "$have_kerberos" = yes; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   119
   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   120
@@ -3387,6 +3414,11 @@ AC_SUBST(INCLUDES)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   121
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   122
 AC_SUBST(PREFERRED_DEMO_PROGRAM)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   123
 AC_SUBST(ALL_DEMO_PROGRAMS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   124
+#--- Begin SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   125
+AC_SUBST(PREFERRED_LOCK_PROGRAM)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   126
+AC_SUBST(ALL_LOCK_PROGRAMS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   127
+AC_SUBST(LOCK_PROGRAM)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   128
+#--- End SUNW addition
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   129
 AC_SUBST(SAVER_LIBS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   130
 AC_SUBST(MOTIF_LIBS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   131
 AC_SUBST(GTK_LIBS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   132
@@ -3855,7 +3887,8 @@ HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" |
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   133
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   134
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   135
 # Sanity check the hackdir
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   136
-for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   137
+# SUNW addition: added xscreensaver-lock to list on next line
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   138
+for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command xscreensaver-lock ; do
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   139
   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   140
     echo ""
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   141
     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   142
diff -urp -x '*~' driver/Makefile.in driver/Makefile.in
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   143
--- driver/Makefile.in	2002-06-11 02:09:07.000000000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   144
+++ driver/Makefile.in	2006-05-10 08:48:29.938067000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   145
@@ -14,6 +14,7 @@ install_prefix	=
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   146
 prefix		= @prefix@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   147
 exec_prefix	= @exec_prefix@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   148
 bindir		= @bindir@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   149
+libexecdir	= @libexecdir@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   150
 mandir		= @mandir@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   151
 man1dir		= $(mandir)/man1
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   152
 mansuffix	= 1
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   153
@@ -30,6 +31,7 @@ GNOME_PANELDIR	= @GNOME_PANELDIR@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   154
 GLADE_DATADIR	= @GLADE_DATADIR@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   155
 GNOME_BINDIR	= $(bindir)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   156
 HACK_CONF_DIR	= @HACK_CONF_DIR@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   157
+LOCK_DIR	= $(libexecdir)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   158
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   159
 CC		= @CC@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   160
 CFLAGS		= @CFLAGS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   161
@@ -39,6 +41,7 @@ INTL_DEFS	= -DLOCALEDIR=\"$(localedir)\"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   162
 SUBP_DEFS	= $(DEFS) -DDEFAULT_PATH_PREFIX='"@HACKDIR@"'
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   163
 GTK_DEFS	= $(DEFS) -DDEFAULT_ICONDIR='"$(GLADE_DATADIR)"'
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   164
 CONF_DEFS	= -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"'
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   165
+LOCK_DEFS	= $(DEFS) -DLOCKDIR=\"$(LOCK_DIR)\"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   166
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   167
 LIBS		= @LIBS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   168
 INTL_LIBS	= @INTLLIBS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   169
@@ -95,6 +98,8 @@ GTK_SRCS	= demo-Gtk.c demo-Gtk-conf.c \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   170
 		  demo-Gtk-widgets.c demo-Gtk-support.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   171
 GTK_EXTRA_OBJS  = demo-Gtk-widgets.o demo-Gtk-support.o
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   172
 GTK_OBJS	= demo-Gtk.o demo-Gtk-conf.o @GTK_EXTRA_OBJS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   173
+GTK_LOCK_SRCS	= lock-Gtk.c remote.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   174
+GTK_LOCK_OBJS	= lock-Gtk.o remote.o
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   175
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   176
 PWENT_SRCS	= passwd-pwent.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   177
 PWENT_OBJS	= passwd-pwent.o
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   178
@@ -199,8 +204,8 @@ GETIMG_LIBS	= $(LIBS) $(X_LIBS) $(XPM_LI
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   179
 		  $(X_PRE_LIBS) -lXt -lX11 $(XMU_LIBS) -lXext $(X_EXTRA_LIBS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   180
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   181
 EXES		= xscreensaver xscreensaver-command xscreensaver-demo \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   182
-		  xscreensaver-getimage
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   183
-EXES2		= @ALL_DEMO_PROGRAMS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   184
+		  xscreensaver-getimage @LOCK_PROGRAM@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   185
+EXES2		= @ALL_DEMO_PROGRAMS@ @ALL_LOCK_PROGRAMS@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   186
 SCRIPTS		= xscreensaver-getimage-file xscreensaver-getimage-video
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   187
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   188
 HDRS		= XScreenSaver_ad.h xscreensaver.h prefs.h remote.h \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   189
@@ -222,7 +227,7 @@ VMSFILES	= compile_axp.com compile_decc.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   190
 		  vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   191
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   192
 TARFILES	= $(EXTRAS) $(VMSFILES) $(SAVER_SRCS_1) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   193
-		  $(MOTIF_SRCS) $(GTK_SRCS) $(PWENT_SRCS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   194
+		  $(MOTIF_SRCS) $(GTK_SRCS) $(GTK_LOCK_SRCS) $(PWENT_SRCS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   195
 		  $(KERBEROS_SRCS) $(PAM_SRCS) $(LOCK_SRCS_1) $(DEMO_SRCS_1) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   196
 		  $(CMD_SRCS) $(GETIMG_SRCS_1) $(HDRS) $(SCRIPTS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   197
 		  $(TEST_SRCS) $(MEN)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   198
@@ -245,6 +250,9 @@ install-program: $(EXES)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   199
 	@if [ ! -d $(install_prefix)$(bindir) ]; then			\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   200
 	  $(INSTALL_DIRS) $(install_prefix)$(bindir) ;			\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   201
 	 fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   202
+	@if [ -n "@LOCK_PROGRAM@" -a ! -d $(install_prefix)$(LOCK_DIR) ]; then \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   203
+	  $(INSTALL_DIRS) $(install_prefix)$(LOCK_DIR) ; 		\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   204
+	 fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   205
 	@inst="$(INSTALL_PROGRAM)" ;					\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   206
 	if [ @NEED_SETUID@ = yes ]; then				\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   207
 	   me=`PATH="$$PATH:/usr/ucb" whoami` ;				\
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   208
@@ -280,6 +288,12 @@ install-program: $(EXES)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   209
 	  $(install_prefix)$(bindir)/xscreensaver-getimage ; \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   210
 	$(INSTALL_PROGRAM) xscreensaver-getimage \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   211
 	  $(install_prefix)$(bindir)/xscreensaver-getimage
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   212
+	@if [ -n "@LOCK_PROGRAM@" ]; then				     \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   213
+	  echo $(INSTALL_PROGRAM) xscreensaver-lock \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   214
+	    $(install_prefix)$(LOCK_DIR)/xscreensaver-lock ; \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   215
+	   $(INSTALL_PROGRAM) xscreensaver-lock \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   216
+	    $(install_prefix)$(LOCK_DIR)/xscreensaver-lock ; \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   217
+	fi
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   218
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   219
 install-ad: XScreenSaver.ad
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   220
 	@if [ ! -d $(install_prefix)$(AD_DIR) ]; then			      \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   221
@@ -767,13 +781,18 @@ $(SAVER_UTIL_OBJS):
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   222
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   223
 # How we build object files in this directory.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   224
 .c.o:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   225
-	$(CC) -c $(INCLUDES) $(DEFS)  $(CFLAGS) $(X_CFLAGS) $<
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   226
+	$(CC) -c $(INCLUDES) $(DEFS) $(INTL_DEFS) $(CFLAGS) $(X_CFLAGS) $<
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   227
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   228
 # subprocs takes an extra -D option.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   229
 subprocs.o: subprocs.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   230
 	$(CC) -c $(INCLUDES) $(SUBP_DEFS) $(CFLAGS) $(X_CFLAGS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   231
 	  $(srcdir)/subprocs.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   232
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   233
+# lock takes an extra -D option.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   234
+lock.o:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   235
+	$(CC) -c $(INCLUDES) $(LOCK_DEFS) $(CFLAGS) $(X_CFLAGS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   236
+	  $(srcdir)/lock.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   237
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   238
 # demo-Gtk takes extra -D options, and an extra -I option.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   239
 demo-Gtk.o: demo-Gtk.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   240
 	$(CC) -c $(INCLUDES) $(SUBP_DEFS) -I$(ICON_SRC) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   241
@@ -785,6 +804,14 @@ demo-Gtk-conf.o: demo-Gtk-conf.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   242
 	$(CC) -c $(INCLUDES) $(CONF_DEFS) $(GTK_DEFS) $(CFLAGS) $(X_CFLAGS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   243
 	  $(srcdir)/demo-Gtk-conf.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   244
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   245
+# lock-Gtk takes extra -D and -I options.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   246
+GTK_LOCK_LOGO_DEFS=-DXPM_LOGO_FILE=\"@XPM_LOGO_FILE@\" \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   247
+		  -DXPM_LOGO_NAME=@XPM_LOGO_NAME@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   248
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   249
+lock-Gtk.o: lock-Gtk.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   250
+	$(CC) -c $(INCLUDES) -I$(ICON_SRC) $(GTK_DEFS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   251
+	  $(CFLAGS) $(X_CFLAGS) $(INTL_DEFS) $(GTK_LOCK_LOGO_DEFS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   252
+	  $(srcdir)/lock-Gtk.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   253
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   254
 # How we build the default app-defaults file into the program.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   255
 #
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   256
@@ -806,6 +833,15 @@ xscreensaver-demo: @PREFERRED_DEMO_PROGR
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   257
 	cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   258
 #	$(INSTALL_PROGRAM) @PREFERRED_DEMO_PROGRAM@ $@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   259
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   260
+xscreensaver-lock: @PREFERRED_LOCK_PROGRAM@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   261
+	$(INSTALL_PROGRAM) @PREFERRED_LOCK_PROGRAM@ $@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   262
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   263
+xscreensaver-lock-Gtk: $(GTK_LOCK_OBJS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   264
+	$(CC) $(LDFLAGS) -o $@ $(GTK_LOCK_OBJS) $(LIBS) $(X_LIBS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   265
+	$(GTK_LIBS) $(XML_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   266
+	$(XDPMS_LIBS) -lXext \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   267
+	$(X_EXTRA_LIBS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   268
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   269
 xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   270
 	$(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(MOTIF_OBJS) $(LIBS) $(X_LIBS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   271
 	$(MOTIF_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   272
@@ -821,7 +857,7 @@ xscreensaver-getimage: $(GETIMG_OBJS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   273
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   274
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   275
 TEST_PASSWD_OBJS = test-passwd.o $(LOCK_OBJS_1) $(PASSWD_OBJS) \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   276
-	 subprocs.o setuid.o splash.o prefs.o \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   277
+	 subprocs.o setuid.o splash.o prefs.o exec.o stderr.o \
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   278
 	$(SAVER_UTIL_OBJS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   279
 test-passwd.o: XScreenSaver_ad.h
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   280
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   281
diff -urp -x '*~' driver/dpms.c driver/dpms.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   282
--- driver/dpms.c	2001-03-22 10:10:53.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   283
+++ driver/dpms.c	2006-05-10 08:48:29.971953000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   284
@@ -16,6 +16,7 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   285
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   286
 #include <stdio.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   287
 #include <X11/Xlib.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   288
+# include <X11/Intrinsic.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   289
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   290
 #ifdef HAVE_DPMS_EXTENSION
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   291
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   292
diff -urp -x '*~' driver/lock.c driver/lock.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   293
--- driver/lock.c	2002-03-05 18:15:03.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   294
+++ driver/lock.c	2006-05-10 08:48:29.981598000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   295
@@ -21,6 +21,8 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   296
 #include <X11/Xos.h>		/* for time() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   297
 #include <time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   298
 #include <sys/time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   299
+#include <errno.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   300
+#include <signal.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   301
 #include "xscreensaver.h"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   302
 #include "resources.h"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   303
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   304
@@ -68,281 +70,428 @@ vms_passwd_valid_p(char *pw, Bool verbos
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   305
 # define passwd_valid_p vms_passwd_valid_p
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   306
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   307
 #endif /* VMS */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   308
+ 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   309
+extern void await_dying_children (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   310
+void hack_uid (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   311
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   312
+Bool g_passwd_dialog_created = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   313
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   314
 #undef MAX
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   315
 #define MAX(a,b) ((a)>(b)?(a):(b))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   316
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   317
 enum passwd_state { pw_read, pw_ok, pw_null, pw_fail, pw_cancel, pw_time };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   318
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   319
-struct passwd_dialog_data {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   320
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   321
-  saver_screen_info *prompt_screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   322
-  int previous_mouse_x, previous_mouse_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   323
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   324
-  enum passwd_state state;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   325
-  char typed_passwd [80];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   326
-  XtIntervalId timer;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   327
-  int i_beam;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   328
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   329
-  float ratio;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   330
-  Position x, y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   331
-  Dimension width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   332
-  Dimension height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   333
-  Dimension border_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   334
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   335
-  char *heading_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   336
-  char *body_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   337
-  char *user_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   338
-  char *passwd_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   339
-  char *date_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   340
-  char *user_string;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   341
-  char *passwd_string;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   342
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   343
-  XFontStruct *heading_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   344
-  XFontStruct *body_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   345
-  XFontStruct *label_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   346
-  XFontStruct *passwd_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   347
-  XFontStruct *date_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   348
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   349
-  Pixel foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   350
-  Pixel background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   351
-  Pixel passwd_foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   352
-  Pixel passwd_background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   353
-  Pixel thermo_foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   354
-  Pixel thermo_background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   355
-  Pixel shadow_top;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   356
-  Pixel shadow_bottom;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   357
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   358
-  Dimension logo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   359
-  Dimension logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   360
-  Dimension thermo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   361
-  Dimension internal_border;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   362
-  Dimension shadow_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   363
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   364
-  Dimension passwd_field_x, passwd_field_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   365
-  Dimension passwd_field_width, passwd_field_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   366
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   367
-  Dimension thermo_field_x, thermo_field_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   368
-  Dimension thermo_field_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   369
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   370
-  Pixmap logo_pixmap;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   371
-  int logo_npixels;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   372
-  unsigned long *logo_pixels;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   373
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   374
-  Pixmap save_under;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   375
-};
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   376
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   377
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   378
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   379
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   380
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   381
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   382
+static void make_window (saver_info *si, enum window_type w_type);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   383
 static void draw_passwd_window (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   384
-static void update_passwd_window (saver_info *si, const char *printed_passwd,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   385
+void update_passwd_window (saver_info *si, const char *printed_passwd,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   386
 				  float ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   387
-static void destroy_passwd_window (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   388
+void destroy_passwd_window (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   389
 static void undo_vp_motion (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   390
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   391
+extern Atom XA_UNLOCK_RATIO;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   392
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   393
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   394
+#if defined (HAVE_XF86VMODE) || defined (HAVE_XSCREENSAVER_LOCK)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   395
+static Bool vp_got_error = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   396
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   397
+static int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   398
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   399
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   400
+  vp_got_error = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   401
+  return 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   402
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   403
+#endif /* defined (HAVE_XF86VMODE) || defined (HAVE_XSCREENSAVER_LOCK) */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   404
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   405
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   406
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   407
+int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   408
+write_to_child (saver_info* si, char* msg)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   409
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   410
+      if (si->external_passwd && g_passwd_dialog_created && si->pw_data->stdin_fd != -1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   411
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   412
+	  ssize_t len;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   413
+	  char *nlmsg;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   414
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   415
+	  nlmsg = (char *)malloc (strlen (msg) + 2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   416
+	  sprintf (nlmsg, "%s\n", msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   417
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   418
+	  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   419
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   420
+              fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   421
+              fprintf (stderr, "HAVE_SCRSVR_LOCK message is:%s writing to fd:%d\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   422
+	                 	   msg, si->pw_data->stdin_fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   423
+              fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   424
+	    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   425
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   426
+	write_msg:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   427
+	  len = write (si->pw_data->stdin_fd, nlmsg, strlen (nlmsg));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   428
+	  if (len < 0 && errno == EINTR)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   429
+	    goto write_msg;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   430
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   431
+	  free (nlmsg);	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   432
+          return (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   433
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   434
+      return (0); /* if we didnt write anything return 0*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   435
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   436
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   437
+static int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   438
+sane_dup2 (int fd1, int fd2)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   439
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   440
+  int ret;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   441
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   442
+ retry:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   443
+  ret = dup2 (fd1, fd2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   444
+  if (ret < 0 && errno == EINTR)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   445
+    goto retry;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   446
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   447
+  return ret;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   448
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   449
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   450
+static int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   451
+close_and_invalidate (int *fd)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   452
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   453
+  int ret;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   454
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   455
+  ret = close (*fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   456
+  *fd = -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   457
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   458
+  return ret;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   459
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   460
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   461
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   462
+handle_passwd_input (XtPointer data, int *fd, XtInputId *id)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   463
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   464
+  saver_info *si = (saver_info *)data;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   465
+  saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   466
+  char buffer[1024];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   467
+  char *s;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   468
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   469
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   470
+    fprintf (stderr, "passwd input handler() fd=%d\n",*fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   471
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   472
+  s = fgets (buffer, sizeof (buffer), si->pw_data->input_file);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   473
+  if (!s)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   474
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   475
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   476
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   477
+	  fprintf (stderr, "done reading...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   478
+	  fprintf (stderr, "removing input handler...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   479
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   480
+      XtRemoveInput (*id);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   481
+      si->pw_data->stdout_input_id = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   482
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   483
+      if (si->pw_data->state == pw_read)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   484
+	si->pw_data->state = pw_null;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   485
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   486
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   487
+        fprintf (stderr, "passwd input handler() returning...done reading\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   488
+ 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   489
+      return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   490
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   491
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   492
+  if (si->pw_data->got_windowid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   493
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   494
+      char *nl;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   495
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   496
+	fprintf (stderr, "got a password\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   497
+      nl = strchr (s, '\n');
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   498
+      if (nl)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   499
+	*nl = '\0';
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   500
+      si->pw_data->passwd_string = strdup (s);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   501
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   502
+        fprintf(stderr,"Dude got password and saving it in passwd_string:%s\n", s);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   503
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   504
+     /* We want to send null to lock dialog to say we are working on authentication*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   505
+     si->pw_data->state = pw_null;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   506
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   507
+  else /* Get the window id of lock dialog from Child ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   508
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   509
+      Window window = strtoul (s, NULL, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   510
+      /* FIXME: what to revert to? */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   511
+      XSetInputFocus (si->dpy, window, RevertToParent, CurrentTime);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   512
+      XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   513
+      si->pw_data->got_windowid = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   514
+      si->passwd_dialog = window;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   515
+      /**g_passwd_dialog_created = True;**/ /*set global flag to check in timers.c*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   516
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   517
+	fprintf (stderr, "<---handle_passwd_input(): gotwindowid:0x%x\n", passwd_win);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   518
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   519
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   520
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   521
+/* returns successful fork/exec */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   522
+Bool
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   523
+spawn_external_passwd_process (saver_info *si, passwd_dialog_data *pw)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   524
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   525
+  saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   526
+  pid_t forked;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   527
+  const char *command = LOCKDIR "/xscreensaver-lock";
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   528
+  int stdin_pipe[2]  = { -1, -1 };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   529
+  int stdout_pipe[2] = { -1, -1 };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   530
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   531
+  si->passwd_pid = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   532
+  pw->stdin_fd = pw->stdout_fd = -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   533
+  pw->got_windowid = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   534
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   535
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   536
+     fprintf(stderr, "-->spawn_external_passwd()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   537
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   538
+  if (pipe (stdin_pipe) < 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   539
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   540
+    perror ("pipe(stdin_pipe) failed!");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   541
+    return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   542
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   543
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   544
+  if (pipe (stdout_pipe) < 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   545
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   546
+      perror ("pipe(stdout_pipe) failed!");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   547
+      close_and_invalidate (&stdin_pipe[0]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   548
+      close_and_invalidate (&stdin_pipe[1]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   549
+      return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   550
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   551
+  switch ((int) (forked = fork ()))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   552
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   553
+    case -1:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   554
+      fprintf (stderr, "%s: ", blurb ());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   555
+      perror ("couldn't fork");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   556
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   557
+      close_and_invalidate (&stdin_pipe[0]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   558
+      close_and_invalidate (&stdin_pipe[1]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   559
+      close_and_invalidate (&stdout_pipe[0]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   560
+      close_and_invalidate (&stdout_pipe[1]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   561
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   562
+      return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   563
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   564
+    case 0:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   565
+      close (ConnectionNumber (si->dpy)); /* close display fd */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   566
+      /* limit_subproc_memory (p->inferior_memory_limit, p->verbose_p); */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   567
+      /* hack_subproc_environment (ssi); */ /* FIX $DISPLAY */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   568
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   569
+      /* Inside Child Process */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   570
+      if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   571
+	fprintf (stderr, "%s: spawning \"%s\" in pid %lu.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   572
+		 blurb(), command, (unsigned long) getpid ());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   573
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   574
+      close_and_invalidate (&stdin_pipe[1]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   575
+      close_and_invalidate (&stdout_pipe[0]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   576
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   577
+      sane_dup2 (stdin_pipe[0], 0);  /* Listen to Parent from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   578
+      sane_dup2 (stdout_pipe[1], 9); /* Talk to Parent from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   579
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   580
+      /* Make sure we have relinquished setuid privs or lock dialog gtk
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   581
+       * program will not run as libgtk is not setuid safe.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   582
+       */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   583
+      hack_uid (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   584
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   585
+      exec_command (p->shell, command, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   586
+      /* print_path_error (command); */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   587
+      fprintf (stderr, "%s: couldn't exec: %s\n", 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   588
+	       blurb (), command);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   589
+      abort ();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   590
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   591
+    default:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   592
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   593
+      /* In Parent */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   594
+      close_and_invalidate (&stdin_pipe[0]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   595
+      close_and_invalidate (&stdout_pipe[1]);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   596
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   597
+      sane_dup2 (stdin_pipe[0], 0);  /* Listen to Child from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   598
+      sane_dup2 (stdout_pipe[1], 13); /* Talk to Child from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   599
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   600
+      pw->stdin_fd   = stdin_pipe[1];   /* Talk to child from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   601
+      pw->stdout_fd  = stdout_pipe[0];  /* Listen to Child from here */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   602
+      si->passwd_pid = forked;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   603
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   604
+      write_to_child (si, "Hello There"); /* Send a test message to Child */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   605
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   606
+      /* Password from child dialog comes through this pipe/fd */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   607
+      pw->input_file = fdopen (pw->stdout_fd, "r");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   608
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   609
+      pw->stdout_input_id = XtAppAddInput (si->app, pw->stdout_fd,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   610
+					   (XtPointer) XtInputReadMask,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   611
+					   handle_passwd_input,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   612
+					   si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   613
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   614
+      /* Set global flag to indicate that lock dialog is visible */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   615
+      g_passwd_dialog_created = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   616
+      return True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   617
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   618
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   619
+  /* shouldn't reach */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   620
+  abort ();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   621
+  return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   622
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   623
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   624
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   625
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   626
 make_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   627
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   628
+  make_window(si, w_dialog);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   629
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   630
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   631
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   632
+static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   633
+make_window (saver_info *si, enum window_type w_type)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   634
+{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   635
   struct passwd *p = getpwuid (getuid ());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   636
   XSetWindowAttributes attrs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   637
   unsigned long attrmask = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   638
-  passwd_dialog_data *pw = (passwd_dialog_data *) calloc (1, sizeof(*pw));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   639
   Screen *screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   640
   Colormap cmap;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   641
   char *f;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   642
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   643
-  pw->prompt_screen = &si->screens [mouse_screen (si)];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   644
   if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   645
-    fprintf (stderr, "%s: %d: creating password dialog.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   646
-             blurb(), pw->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   647
+     fprintf(stderr, "-->make_window()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   648
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   649
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   650
+      if (spawn_external_passwd_process (si, si->pw_data))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   651
+	{ 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   652
+/***************
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   653
+          if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   654
+	    fprintf(stderr, "spawning external passwd process in make_window()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   655
+*******************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   656
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   657
+/****************mali blank_fails remove this...
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   658
+	  if(!blank_screen(si))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   659
+	    fprintf(stderr, "Failed to blank the screen\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   660
+*******************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   661
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   662
+	  si->pw_data->ratio = 1.0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   663
+	  si->pw_data->w_type = w_type;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   664
+	  /*si->pw_data = pw;*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   665
+	  si->external_passwd = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   666
+	  return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   667
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   668
+  si->external_passwd = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   669
+  /* FIXME: don't abort() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   670
+  /*abort ();*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   671
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   672
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   673
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   674
+     fprintf (stderr, "creating message window\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   675
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   676
-  screen = pw->prompt_screen->screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   677
+  si->pw_data->prompt_screen = &si->screens [mouse_screen (si)];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   678
+  /*mali pw->prompt_screen = &si->screens[0];   hardwired for now */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   679
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   680
+    fprintf (stderr, "%s: %d: creating message window.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   681
+             blurb(), si->pw_data->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   682
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   683
+  screen = si->pw_data->prompt_screen->screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   684
   cmap = DefaultColormapOfScreen (screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   685
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   686
-  pw->ratio = 1.0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   687
+  si->pw_data->w_type = w_type;  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   688
+  si->pw_data->state = pw_read;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   689
+  si->pw_data->ratio = 1.0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   690
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   691
-  pw->heading_label = get_string_resource ("passwd.heading.label",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   692
+  si->pw_data->heading_label = get_string_resource ("passwd.heading.label",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   693
 					   "Dialog.Label.Label");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   694
-  pw->body_label = get_string_resource ("passwd.body.label",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   695
-					"Dialog.Label.Label");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   696
-  pw->user_label = get_string_resource ("passwd.user.label",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   697
-					"Dialog.Label.Label");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   698
-  pw->passwd_label = get_string_resource ("passwd.passwd.label",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   699
-					  "Dialog.Label.Label");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   700
-  pw->date_label = get_string_resource ("dateFormat", "DateFormat");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   701
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   702
-  if (!pw->heading_label)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   703
-    pw->heading_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   704
-  if (!pw->body_label)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   705
-    pw->body_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   706
-  if (!pw->user_label) pw->user_label = strdup("ERROR");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   707
-  if (!pw->passwd_label) pw->passwd_label = strdup("ERROR");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   708
-  if (!pw->date_label) pw->date_label = strdup("ERROR");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   709
+  si->pw_data->date_label = get_string_resource ("dateFormat", "DateFormat");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   710
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   711
+  if (!si->pw_data->heading_label)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   712
+    si->pw_data->heading_label = strdup("ERROR: REESOURCES NOT INSTALLED CORRECTLY");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   713
+  if (!si->pw_data->date_label) si->pw_data->date_label = strdup("ERROR");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   714
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   715
   /* Put the version number in the label. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   716
   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   717
-    char *s = (char *) malloc (strlen(pw->heading_label) + 20);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   718
-    sprintf(s, pw->heading_label, si->version);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   719
-    free (pw->heading_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   720
-    pw->heading_label = s;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   721
+    char *s = (char *) malloc (strlen(si->pw_data->heading_label) + 20);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   722
+    sprintf(s, si->pw_data->heading_label, si->version);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   723
+    free (si->pw_data->heading_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   724
+    si->pw_data->heading_label = s;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   725
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   726
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   727
-  pw->user_string = strdup (p && p->pw_name ? p->pw_name : "???");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   728
-  pw->passwd_string = strdup("");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   729
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   730
   f = get_string_resource ("passwd.headingFont", "Dialog.Font");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   731
-  pw->heading_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   732
-  if (!pw->heading_font) pw->heading_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   733
+  si->pw_data->heading_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   734
+  if (!si->pw_data->heading_font) si->pw_data->heading_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   735
   if (f) free (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   736
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   737
   f = get_string_resource("passwd.bodyFont", "Dialog.Font");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   738
-  pw->body_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   739
-  if (!pw->body_font) pw->body_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   740
-  if (f) free (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   741
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   742
-  f = get_string_resource("passwd.labelFont", "Dialog.Font");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   743
-  pw->label_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   744
-  if (!pw->label_font) pw->label_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   745
-  if (f) free (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   746
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   747
-  f = get_string_resource("passwd.passwdFont", "Dialog.Font");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   748
-  pw->passwd_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   749
-  if (!pw->passwd_font) pw->passwd_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   750
+  si->pw_data->body_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   751
+  if (!si->pw_data->body_font) si->pw_data->body_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   752
   if (f) free (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   753
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   754
   f = get_string_resource("passwd.dateFont", "Dialog.Font");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   755
-  pw->date_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   756
-  if (!pw->date_font) pw->date_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   757
+  si->pw_data->date_font = XLoadQueryFont (si->dpy, (f ? f : "fixed"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   758
+  if (!si->pw_data->date_font) si->pw_data->date_font = XLoadQueryFont (si->dpy, "fixed");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   759
   if (f) free (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   760
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   761
-  pw->foreground = get_pixel_resource ("passwd.foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   762
+  si->pw_data->foreground = get_pixel_resource ("passwd.foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   763
 				       "Dialog.Foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   764
 				       si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   765
-  pw->background = get_pixel_resource ("passwd.background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   766
+  si->pw_data->background = get_pixel_resource ("passwd.background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   767
 				       "Dialog.Background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   768
 				       si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   769
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   770
-  if (pw->foreground == pw->background)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   771
+  if (si->pw_data->foreground == si->pw_data->background)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   772
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   773
       /* Make sure the error messages show up. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   774
-      pw->foreground = BlackPixelOfScreen (screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   775
-      pw->background = WhitePixelOfScreen (screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   776
+      si->pw_data->foreground = BlackPixelOfScreen (screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   777
+      si->pw_data->background = WhitePixelOfScreen (screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   778
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   779
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   780
-  pw->passwd_foreground = get_pixel_resource ("passwd.text.foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   781
-					      "Dialog.Text.Foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   782
-					      si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   783
-  pw->passwd_background = get_pixel_resource ("passwd.text.background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   784
-					      "Dialog.Text.Background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   785
-					      si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   786
-  pw->thermo_foreground = get_pixel_resource ("passwd.thermometer.foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   787
+  si->pw_data->thermo_foreground = get_pixel_resource ("passwd.thermometer.foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   788
 					      "Dialog.Thermometer.Foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   789
 					      si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   790
-  pw->thermo_background = get_pixel_resource ("passwd.thermometer.background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   791
+  si->pw_data->thermo_background = get_pixel_resource ("passwd.thermometer.background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   792
 					      "Dialog.Thermometer.Background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   793
 					      si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   794
-  pw->shadow_top = get_pixel_resource ("passwd.topShadowColor",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   795
+  si->pw_data->shadow_top = get_pixel_resource ("passwd.topShadowColor",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   796
 				       "Dialog.Foreground",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   797
 				       si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   798
-  pw->shadow_bottom = get_pixel_resource ("passwd.bottomShadowColor",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   799
+  si->pw_data->shadow_bottom = get_pixel_resource ("passwd.bottomShadowColor",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   800
 					  "Dialog.Background",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   801
 					  si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   802
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   803
-  pw->logo_width = get_integer_resource ("passwd.logo.width",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   804
+  si->pw_data->logo_width = get_integer_resource ("passwd.logo.width",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   805
 					 "Dialog.Logo.Width");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   806
-  pw->logo_height = get_integer_resource ("passwd.logo.height",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   807
+  si->pw_data->logo_height = get_integer_resource ("passwd.logo.height",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   808
 					  "Dialog.Logo.Height");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   809
-  pw->thermo_width = get_integer_resource ("passwd.thermometer.width",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   810
+  si->pw_data->thermo_width = get_integer_resource ("passwd.thermometer.width",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   811
 					   "Dialog.Thermometer.Width");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   812
-  pw->internal_border = get_integer_resource ("passwd.internalBorderWidth",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   813
+  si->pw_data->internal_border = get_integer_resource ("passwd.internalBorderWidth",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   814
 					      "Dialog.InternalBorderWidth");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   815
-  pw->shadow_width = get_integer_resource ("passwd.shadowThickness",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   816
+  si->pw_data->shadow_width = get_integer_resource ("passwd.shadowThickness",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   817
 					   "Dialog.ShadowThickness");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   818
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   819
-  if (pw->logo_width == 0)  pw->logo_width = 150;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   820
-  if (pw->logo_height == 0) pw->logo_height = 150;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   821
-  if (pw->internal_border == 0) pw->internal_border = 15;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   822
-  if (pw->shadow_width == 0) pw->shadow_width = 4;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   823
-  if (pw->thermo_width == 0) pw->thermo_width = pw->shadow_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   824
+  if (si->pw_data->logo_width == 0)  si->pw_data->logo_width = 150;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   825
+  if (si->pw_data->logo_height == 0) si->pw_data->logo_height = 150;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   826
+  if (si->pw_data->internal_border == 0) si->pw_data->internal_border = 15;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   827
+  if (si->pw_data->shadow_width == 0) si->pw_data->shadow_width = 4;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   828
+  if (si->pw_data->thermo_width == 0) si->pw_data->thermo_width = si->pw_data->shadow_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   829
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   830
   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   831
     int direction, ascent, descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   832
     XCharStruct overall;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   833
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   834
-    pw->width = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   835
-    pw->height = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   836
+    si->pw_data->width = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   837
+    si->pw_data->height = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   838
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   839
     /* Measure the heading_label. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   840
-    XTextExtents (pw->heading_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   841
-		  pw->heading_label, strlen(pw->heading_label),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   842
+    XTextExtents (si->pw_data->heading_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   843
+		  si->pw_data->heading_label, strlen(si->pw_data->heading_label),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   844
 		  &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   845
-    if (overall.width > pw->width) pw->width = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   846
-    pw->height += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   847
+    if (overall.width > si->pw_data->width) si->pw_data->width = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   848
+    si->pw_data->height += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   849
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   850
-    /* Measure the body_label. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   851
-    XTextExtents (pw->body_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   852
-		  pw->body_label, strlen(pw->body_label),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   853
-		  &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   854
-    if (overall.width > pw->width) pw->width = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   855
-    pw->height += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   856
+    si->pw_data->width  += (si->pw_data->internal_border * 2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   857
+    si->pw_data->height += (si->pw_data->internal_border * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   858
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   859
-    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   860
-      Dimension w2 = 0, w3 = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   861
-      Dimension h2 = 0, h3 = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   862
-      const char *passwd_string = "MMMMMMMMMMMM";
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   863
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   864
-      /* Measure the user_label. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   865
-      XTextExtents (pw->label_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   866
-		    pw->user_label, strlen(pw->user_label),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   867
-		    &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   868
-      if (overall.width > w2)  w2 = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   869
-      h2 += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   870
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   871
-      /* Measure the passwd_label. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   872
-      XTextExtents (pw->label_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   873
-		    pw->passwd_label, strlen(pw->passwd_label),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   874
-		    &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   875
-      if (overall.width > w2)  w2 = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   876
-      h2 += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   877
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   878
-      /* Measure the user_string. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   879
-      XTextExtents (pw->passwd_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   880
-		    pw->user_string, strlen(pw->user_string),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   881
-		    &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   882
-      overall.width += (pw->shadow_width * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   883
-      ascent += (pw->shadow_width * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   884
-      if (overall.width > w3)  w3 = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   885
-      h3 += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   886
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   887
-      /* Measure the (maximally-sized, dummy) passwd_string. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   888
-      XTextExtents (pw->passwd_font,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   889
-		    passwd_string, strlen(passwd_string),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   890
-		    &direction, &ascent, &descent, &overall);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   891
-      overall.width += (pw->shadow_width * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   892
-      ascent += (pw->shadow_width * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   893
-      if (overall.width > w3)  w3 = overall.width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   894
-      h3 += ascent + descent;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   895
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   896
-      w2 = w2 + w3 + (pw->shadow_width * 2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   897
-      h2 = MAX (h2, h3);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   898
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   899
-      if (w2 > pw->width)  pw->width  = w2;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   900
-      pw->height += h2;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   901
-    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   902
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   903
-    pw->width  += (pw->internal_border * 2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   904
-    pw->height += (pw->internal_border * 4);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   905
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   906
-    pw->width += pw->thermo_width + (pw->shadow_width * 3);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   907
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   908
-    if (pw->logo_height > pw->height)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   909
-      pw->height = pw->logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   910
-    else if (pw->height > pw->logo_height)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   911
-      pw->logo_height = pw->height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   912
+    si->pw_data->width += si->pw_data->thermo_width + (si->pw_data->shadow_width * 3);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   913
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   914
+    if (si->pw_data->logo_height > si->pw_data->height)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   915
+      si->pw_data->height = si->pw_data->logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   916
+    else if (si->pw_data->height > si->pw_data->logo_height)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   917
+      si->pw_data->logo_height = si->pw_data->height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   918
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   919
-    pw->logo_width = pw->logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   920
+    si->pw_data->logo_width = si->pw_data->logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   921
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   922
-    pw->width += pw->logo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   923
+    si->pw_data->width += si->pw_data->logo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   924
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   925
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   926
   attrmask |= CWOverrideRedirect; attrs.override_redirect = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   927
@@ -356,22 +505,22 @@ make_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   928
     Window pointer_root, pointer_child;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   929
     int root_x, root_y, win_x, win_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   930
     unsigned int mask;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   931
-    pw->previous_mouse_x = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   932
-    pw->previous_mouse_y = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   933
-    if (XQueryPointer (si->dpy, RootWindowOfScreen (pw->prompt_screen->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   934
+    si->pw_data->previous_mouse_x = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   935
+    si->pw_data->previous_mouse_y = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   936
+    if (XQueryPointer (si->dpy, RootWindowOfScreen (si->pw_data->prompt_screen->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   937
                        &pointer_root, &pointer_child,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   938
                        &root_x, &root_y, &win_x, &win_y, &mask))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   939
       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   940
-        pw->previous_mouse_x = root_x;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   941
-        pw->previous_mouse_y = root_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   942
+        si->pw_data->previous_mouse_x = root_x;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   943
+        si->pw_data->previous_mouse_y = root_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   944
         if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   945
           fprintf (stderr, "%s: %d: mouse is at %d,%d.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   946
-                   blurb(), pw->prompt_screen->number,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   947
-                   pw->previous_mouse_x, pw->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   948
+                   blurb(), si->pw_data->prompt_screen->number,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   949
+                   si->pw_data->previous_mouse_x, si->pw_data->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   950
       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   951
     else if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   952
       fprintf (stderr, "%s: %d: unable to determine mouse position?\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   953
-               blurb(), pw->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   954
+               blurb(), si->pw_data->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   955
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   956
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   957
   /* Figure out where on the desktop to place the window so that it will
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   958
@@ -379,31 +528,31 @@ make_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   959
      well as Xinerama. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   960
   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   961
     int x, y, w, h;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   962
-    get_screen_viewport (pw->prompt_screen, &x, &y, &w, &h,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   963
-                         pw->previous_mouse_x, pw->previous_mouse_y,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   964
+    get_screen_viewport (si->pw_data->prompt_screen, &x, &y, &w, &h,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   965
+                         si->pw_data->previous_mouse_x, si->pw_data->previous_mouse_y,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   966
                          si->prefs.verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   967
     if (si->prefs.debug_p) w /= 2;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   968
-    pw->x = x + ((w + pw->width) / 2) - pw->width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   969
-    pw->y = y + ((h + pw->height) / 2) - pw->height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   970
-    if (pw->x < x) pw->x = x;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   971
-    if (pw->y < y) pw->y = y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   972
+    si->pw_data->x = x + ((w + si->pw_data->width) / 2) - si->pw_data->width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   973
+    si->pw_data->y = y + ((h + si->pw_data->height) / 2) - si->pw_data->height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   974
+    if (si->pw_data->x < x) si->pw_data->x = x;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   975
+    if (si->pw_data->y < y) si->pw_data->y = y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   976
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   977
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   978
-  pw->border_width = get_integer_resource ("passwd.borderWidth",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   979
+  si->pw_data->border_width = get_integer_resource ("passwd.borderWidth",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   980
                                            "Dialog.BorderWidth");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   981
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   982
   si->passwd_dialog =
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   983
     XCreateWindow (si->dpy,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   984
 		   RootWindowOfScreen(screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   985
-		   pw->x, pw->y, pw->width, pw->height, pw->border_width,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   986
+		   si->pw_data->x, si->pw_data->y, si->pw_data->width, si->pw_data->height, si->pw_data->border_width,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   987
 		   DefaultDepthOfScreen (screen), InputOutput,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   988
 		   DefaultVisualOfScreen(screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   989
 		   attrmask, &attrs);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   990
-  XSetWindowBackground (si->dpy, si->passwd_dialog, pw->background);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   991
+  XSetWindowBackground (si->dpy, si->passwd_dialog, si->pw_data->background);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   992
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   993
-  pw->logo_pixmap = xscreensaver_logo (si->dpy, si->passwd_dialog, cmap,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   994
-                                       pw->background, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   995
-                                       &pw->logo_pixels, &pw->logo_npixels,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   996
+  si->pw_data->logo_pixmap = xscreensaver_logo (si->dpy, si->passwd_dialog, cmap,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   997
+                                       si->pw_data->background, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   998
+                                       &si->pw_data->logo_pixels, &si->pw_data->logo_npixels,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
   999
                                        0, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1000
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1001
   /* Before mapping the window, save the bits that are underneath the
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1002
@@ -414,18 +563,18 @@ make_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1003
   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1004
     XGCValues gcv;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1005
     GC gc;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1006
-    pw->save_under = XCreatePixmap (si->dpy,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1007
-                                    pw->prompt_screen->screensaver_window,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1008
-                                    pw->width + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1009
-                                    pw->height + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1010
-                                    pw->prompt_screen->current_depth);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1011
+    si->pw_data->save_under = XCreatePixmap (si->dpy,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1012
+                                    si->pw_data->prompt_screen->screensaver_window,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1013
+                                    si->pw_data->width + (si->pw_data->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1014
+                                    si->pw_data->height + (si->pw_data->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1015
+                                    si->pw_data->prompt_screen->current_depth);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1016
     gcv.function = GXcopy;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1017
-    gc = XCreateGC (si->dpy, pw->save_under, GCFunction, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1018
-    XCopyArea (si->dpy, pw->prompt_screen->screensaver_window,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1019
-               pw->save_under, gc,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1020
-               pw->x - pw->border_width, pw->y - pw->border_width,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1021
-               pw->width + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1022
-               pw->height + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1023
+    gc = XCreateGC (si->dpy, si->pw_data->save_under, GCFunction, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1024
+    XCopyArea (si->dpy, si->pw_data->prompt_screen->screensaver_window,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1025
+               si->pw_data->save_under, gc,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1026
+               si->pw_data->x - si->pw_data->border_width, si->pw_data->y - si->pw_data->border_width,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1027
+               si->pw_data->width + (si->pw_data->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1028
+               si->pw_data->height + (si->pw_data->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1029
                0, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1030
     XFreeGC (si->dpy, gc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1031
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1032
@@ -434,11 +583,11 @@ make_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1033
   XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1034
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1035
   move_mouse_grab (si, si->passwd_dialog,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1036
-                   pw->prompt_screen->cursor,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1037
-                   pw->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1038
+                   si->pw_data->prompt_screen->cursor,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1039
+                   si->pw_data->prompt_screen->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1040
   undo_vp_motion (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1041
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1042
-  si->pw_data = pw;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1043
+  /*mali si->pw_data_data = si->pw_data;***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1044
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1045
   if (cmap)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1046
     XInstallColormap (si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1047
@@ -458,6 +607,10 @@ draw_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1048
   int sw;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1049
   int tb_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1050
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1051
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1052
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1053
+    fprintf (stderr, "-->draw_passwd_window() case w_dialog!!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1054
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1055
   height = (pw->heading_font->ascent + pw->heading_font->descent +
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1056
 	    pw->body_font->ascent + pw->body_font->descent +
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1057
 	    (2 * MAX ((pw->label_font->ascent + pw->label_font->descent),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1058
@@ -676,7 +829,7 @@ draw_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1059
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1060
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1061
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1062
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1063
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1064
 update_passwd_window (saver_info *si, const char *printed_passwd, float ratio)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1065
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1066
   passwd_dialog_data *pw = si->pw_data;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1067
@@ -686,8 +839,20 @@ update_passwd_window (saver_info *si, co
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1068
   XRectangle rects[1];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1069
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1070
   pw->ratio = ratio;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1071
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1072
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1073
+    fprintf (stderr, "-->update_passwd_window() w_dialog !!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1074
+  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1075
+  if (!si->pw_data->got_windowid )
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1076
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1077
+      if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1078
+	fprintf (stderr, "-->update_passwd_window() lockdialog not created returning.. !!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1079
+      return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1080
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1081
+  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1082
   gcv.foreground = pw->passwd_foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1083
-  gcv.font = pw->passwd_font->fid;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1084
+  if (pw->passwd_font)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1085
+    gcv.font = pw->passwd_font->fid;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1086
   gc1 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground|GCFont, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1087
   gcv.foreground = pw->passwd_background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1088
   gc2 = XCreateGC (si->dpy, si->passwd_dialog, GCForeground, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1089
@@ -760,114 +925,186 @@ update_passwd_window (saver_info *si, co
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1090
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1091
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1092
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1093
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1094
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1095
 destroy_passwd_window (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1096
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1097
   saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1098
   passwd_dialog_data *pw = si->pw_data;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1099
-  saver_screen_info *ssi = pw->prompt_screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1100
-  Colormap cmap = DefaultColormapOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1101
-  Pixel black = BlackPixelOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1102
-  Pixel white = WhitePixelOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1103
+  saver_screen_info *ssi;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1104
+  Colormap cmap;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1105
+  Pixel black, white;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1106
   XEvent event;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1107
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1108
-  memset (pw->typed_passwd, 0, sizeof(pw->typed_passwd));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1109
-  memset (pw->passwd_string, 0, strlen(pw->passwd_string));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1110
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1111
+    fprintf (stderr, "destroy_passwd_window\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1112
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1113
+  if (pw == NULL || pw->got_windowid == 0 || si->external_passwd == 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1114
+    return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1115
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1116
   if (pw->timer)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1117
     XtRemoveTimeOut (pw->timer);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1118
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1119
-  move_mouse_grab (si, RootWindowOfScreen (ssi->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1120
-                   ssi->cursor, ssi->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1121
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1122
-  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1123
-    fprintf (stderr, "%s: %d: moving mouse back to %d,%d.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1124
-             blurb(), ssi->number,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1125
-             pw->previous_mouse_x, pw->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1126
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1127
-  XWarpPointer (si->dpy, None, RootWindowOfScreen (ssi->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1128
-                0, 0, 0, 0,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1129
-                pw->previous_mouse_x, pw->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1130
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1131
-  XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1132
-  while (XCheckMaskEvent (si->dpy, PointerMotionMask, &event))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1133
-    if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1134
-      fprintf (stderr, "%s: discarding MotionNotify event.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1135
+  /*reset global flag to indicate passwd dialog is no longer there*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1136
+  g_passwd_dialog_created = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1137
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1138
-  if (si->passwd_dialog)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1139
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1140
+  if (si->external_passwd)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1141
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1142
-      XDestroyWindow (si->dpy, si->passwd_dialog);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1143
-      si->passwd_dialog = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1144
+      /* kill the child etc. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1145
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1146
+      if (si->passwd_dialog)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1147
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1148
+	  XErrorHandler old_handler;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1149
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1150
+	  XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1151
+	  old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1152
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1153
+	  XDestroyWindow (si->dpy, si->passwd_dialog);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1154
+	  XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1155
+	  XSetErrorHandler (old_handler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1156
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1157
+	  si->passwd_dialog = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1158
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1159
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1160
+      if (pw->stdout_input_id)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1161
+	XtRemoveInput (pw->stdout_input_id);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1162
+      if (pw->stdin_fd != -1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1163
+	close_and_invalidate (&pw->stdin_fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1164
+      if (pw->input_file)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1165
+	fclose (pw->input_file);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1166
+      else if (pw->stdout_fd != -1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1167
+	close_and_invalidate (&pw->stdout_fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1168
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1169
+      block_sigchld ();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1170
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1171
+      if (si->passwd_pid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1172
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1173
+	  int status = -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1174
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1175
+	  status = kill (si->passwd_pid, SIGTERM);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1176
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1177
+	  await_dying_children (si);  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1178
+	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1179
+	  si->passwd_pid = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1180
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1181
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1182
+      unblock_sigchld ();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1183
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1184
+      si->external_passwd = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1185
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1186
-  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1187
-  if (pw->save_under)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1188
+  else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1189
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1190
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1191
-      XGCValues gcv;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1192
-      GC gc;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1193
-      gcv.function = GXcopy;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1194
-      gc = XCreateGC (si->dpy, ssi->screensaver_window, GCFunction, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1195
-      XCopyArea (si->dpy, pw->save_under,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1196
-                 ssi->screensaver_window, gc,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1197
-                 0, 0,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1198
-                 pw->width + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1199
-                 pw->height + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1200
-                 pw->x - pw->border_width, pw->y - pw->border_width);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1201
-      XFreePixmap (si->dpy, pw->save_under);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1202
-      pw->save_under = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1203
-      XFreeGC (si->dpy, gc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1204
-    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1205
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1206
-  if (pw->heading_label) free (pw->heading_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1207
-  if (pw->body_label)    free (pw->body_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1208
-  if (pw->user_label)    free (pw->user_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1209
-  if (pw->passwd_label)  free (pw->passwd_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1210
-  if (pw->date_label)    free (pw->date_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1211
-  if (pw->user_string)   free (pw->user_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1212
-  if (pw->passwd_string) free (pw->passwd_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1213
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1214
-  if (pw->heading_font) XFreeFont (si->dpy, pw->heading_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1215
-  if (pw->body_font)    XFreeFont (si->dpy, pw->body_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1216
-  if (pw->label_font)   XFreeFont (si->dpy, pw->label_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1217
-  if (pw->passwd_font)  XFreeFont (si->dpy, pw->passwd_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1218
-  if (pw->date_font)    XFreeFont (si->dpy, pw->date_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1219
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1220
-  if (pw->foreground != black && pw->foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1221
-    XFreeColors (si->dpy, cmap, &pw->foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1222
-  if (pw->background != black && pw->background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1223
-    XFreeColors (si->dpy, cmap, &pw->background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1224
-  if (pw->passwd_foreground != black && pw->passwd_foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1225
-    XFreeColors (si->dpy, cmap, &pw->passwd_foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1226
-  if (pw->passwd_background != black && pw->passwd_background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1227
-    XFreeColors (si->dpy, cmap, &pw->passwd_background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1228
-  if (pw->thermo_foreground != black && pw->thermo_foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1229
-    XFreeColors (si->dpy, cmap, &pw->thermo_foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1230
-  if (pw->thermo_background != black && pw->thermo_background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1231
-    XFreeColors (si->dpy, cmap, &pw->thermo_background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1232
-  if (pw->shadow_top != black && pw->shadow_top != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1233
-    XFreeColors (si->dpy, cmap, &pw->shadow_top, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1234
-  if (pw->shadow_bottom != black && pw->shadow_bottom != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1235
-    XFreeColors (si->dpy, cmap, &pw->shadow_bottom, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1236
+      if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1237
+	fprintf (stderr, "In destroy_passwd else case..i.e. si->external-passwd is False already\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1238
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1239
-  if (pw->logo_pixmap)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1240
-    XFreePixmap (si->dpy, pw->logo_pixmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1241
-  if (pw->logo_pixels)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1242
-    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1243
-      if (pw->logo_npixels)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1244
-        XFreeColors (si->dpy, cmap, pw->logo_pixels, pw->logo_npixels, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1245
-      free (pw->logo_pixels);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1246
-      pw->logo_pixels = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1247
-      pw->logo_npixels = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1248
-    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1249
+      if (pw->passwd_string == NULL)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1250
+	pw->passwd_string = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1251
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1252
-  if (pw->save_under)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1253
-    XFreePixmap (si->dpy, pw->save_under);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1254
+      memset (pw->typed_passwd, 0, sizeof(pw->typed_passwd));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1255
+      memset (pw->passwd_string, 0, strlen(pw->passwd_string));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1256
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1257
-  if (cmap)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1258
-    XInstallColormap (si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1259
+      ssi = pw->prompt_screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1260
+      cmap = DefaultColormapOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1261
+      black = BlackPixelOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1262
+      white = WhitePixelOfScreen (ssi->screen);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1263
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1264
+      move_mouse_grab (si, RootWindowOfScreen (ssi->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1265
+		       ssi->cursor, ssi->number);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1266
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1267
+      if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1268
+	fprintf (stderr, "%s: %d: moving mouse back to %d,%d.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1269
+		 blurb(), ssi->number,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1270
+		 pw->previous_mouse_x, pw->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1271
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1272
+      XWarpPointer (si->dpy, None, RootWindowOfScreen (ssi->screen),
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1273
+		    0, 0, 0, 0,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1274
+		    pw->previous_mouse_x, pw->previous_mouse_y);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1275
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1276
+      XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1277
+      while (XCheckMaskEvent (si->dpy, PointerMotionMask, &event))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1278
+	if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1279
+	  fprintf (stderr, "%s: discarding MotionNotify event.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1280
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1281
+      if (si->passwd_dialog)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1282
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1283
+	  XDestroyWindow (si->dpy, si->passwd_dialog);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1284
+	  si->passwd_dialog = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1285
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1286
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1287
+      if (pw->save_under)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1288
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1289
+	  XGCValues gcv;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1290
+	  GC gc;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1291
+	  gcv.function = GXcopy;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1292
+	  gc = XCreateGC (si->dpy, ssi->screensaver_window, GCFunction, &gcv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1293
+	  XCopyArea (si->dpy, pw->save_under,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1294
+		     ssi->screensaver_window, gc,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1295
+		     0, 0,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1296
+		     pw->width + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1297
+		     pw->height + (pw->border_width*2) + 1,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1298
+		     pw->x - pw->border_width, pw->y - pw->border_width);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1299
+	  XFreePixmap (si->dpy, pw->save_under);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1300
+	  pw->save_under = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1301
+	  XFreeGC (si->dpy, gc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1302
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1303
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1304
+      if (pw->heading_label) free (pw->heading_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1305
+      if (pw->body_label)    free (pw->body_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1306
+      if (pw->user_label)    free (pw->user_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1307
+      if (pw->passwd_label)  free (pw->passwd_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1308
+      if (pw->date_label)    free (pw->date_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1309
+      if (pw->user_string)   free (pw->user_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1310
+      if (pw->passwd_string) free (pw->passwd_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1311
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1312
+      if (pw->heading_font) XFreeFont (si->dpy, pw->heading_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1313
+      if (pw->body_font)    XFreeFont (si->dpy, pw->body_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1314
+      if (pw->label_font)   XFreeFont (si->dpy, pw->label_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1315
+      if (pw->passwd_font)  XFreeFont (si->dpy, pw->passwd_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1316
+      if (pw->date_font)    XFreeFont (si->dpy, pw->date_font);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1317
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1318
+      if (pw->foreground != black && pw->foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1319
+	XFreeColors (si->dpy, cmap, &pw->foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1320
+      if (pw->background != black && pw->background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1321
+	XFreeColors (si->dpy, cmap, &pw->background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1322
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1323
+      if (pw->passwd_foreground != black && pw->passwd_foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1324
+	XFreeColors (si->dpy, cmap, &pw->passwd_foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1325
+      if (pw->passwd_background != black && pw->passwd_background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1326
+	XFreeColors (si->dpy, cmap, &pw->passwd_background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1327
+      if (pw->thermo_foreground != black && pw->thermo_foreground != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1328
+	XFreeColors (si->dpy, cmap, &pw->thermo_foreground, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1329
+      if (pw->thermo_background != black && pw->thermo_background != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1330
+	XFreeColors (si->dpy, cmap, &pw->thermo_background, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1331
+      if (pw->shadow_top != black && pw->shadow_top != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1332
+	XFreeColors (si->dpy, cmap, &pw->shadow_top, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1333
+      if (pw->shadow_bottom != black && pw->shadow_bottom != white)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1334
+	XFreeColors (si->dpy, cmap, &pw->shadow_bottom, 1, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1335
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1336
+      if (pw->logo_pixmap)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1337
+	XFreePixmap (si->dpy, pw->logo_pixmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1338
+      if (pw->logo_pixels)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1339
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1340
+	  if (pw->logo_npixels)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1341
+	    XFreeColors (si->dpy, cmap, pw->logo_pixels, pw->logo_npixels, 0L);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1342
+	  free (pw->logo_pixels);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1343
+	  pw->logo_pixels = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1344
+	  pw->logo_npixels = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1345
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1346
+  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1347
+      if (pw->save_under)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1348
+	XFreePixmap (si->dpy, pw->save_under);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1349
+  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1350
+      if (cmap)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1351
+	XInstallColormap (si->dpy, cmap);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1352
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1353
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1354
   memset (pw, 0, sizeof(*pw));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1355
-  free (pw);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1356
-  si->pw_data = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1357
+  /*** NO mali99 we only create a copy of pw in main and keep it
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1358
+     so dont free it.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1359
+     free (pw);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1360
+     si->pw_data = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1361
+   ************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1362
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1363
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1364
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1365
@@ -968,9 +1205,6 @@ linux_lock_vt_switch (saver_info *si, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1366
  */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1367
 #ifdef HAVE_XF86VMODE
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1368
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1369
-static int ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1370
-static Bool vp_got_error = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1371
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1372
 static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1373
 xfree_lock_mode_switch (saver_info *si, Bool lock_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1374
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1375
@@ -1010,13 +1244,6 @@ xfree_lock_mode_switch (saver_info *si, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1376
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1377
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1378
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1379
-static int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1380
-ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1381
-{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1382
-  vp_got_error = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1383
-  return 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1384
-}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1385
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1386
 #endif /* HAVE_XF86VMODE */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1387
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1388
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1389
@@ -1085,17 +1312,64 @@ passwd_animate_timer (XtPointer closure,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1390
   int tick = 166;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1391
   passwd_dialog_data *pw = si->pw_data;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1392
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1393
-  if (!pw) return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1394
+/*  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1395
+   fprintf (stderr,"-->passwd_animate_timer()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1396
+**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1397
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1398
+  /*We want to make sure dialog isup before we try to animate**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1399
+  if (!si->external_passwd || !g_passwd_dialog_created) 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1400
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1401
+    if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1402
+      fprintf (stderr,"-->passwd_animate_timer() returning..no dialog yet\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1403
+    return;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1404
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1405
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1406
   pw->ratio -= (1.0 / ((double) si->prefs.passwd_timeout / (double) tick));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1407
   if (pw->ratio < 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1408
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1409
       pw->ratio = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1410
-      if (pw->state == pw_read)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1411
+      if (pw->state == pw_read || pw->state == pw_null)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1412
+       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1413
 	pw->state = pw_time;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1414
+       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1415
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1416
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1417
+/*** Communicating with the Child lock dialog...sending ratio back... mali99***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1418
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1419
+  if (si->passwd_dialog)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1420
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1421
+      XEvent event;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1422
+      Bool status;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1423
+      XErrorHandler old_handler;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1424
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1425
+/*      fprintf (stderr,"-->passwd_animate_timer() sending ratio to child\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1426
+**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1427
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1428
+      event.xany.type = ClientMessage;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1429
+      event.xclient.display = si->dpy;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1430
+      event.xclient.window = si->passwd_dialog;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1431
+      event.xclient.message_type = XA_UNLOCK_RATIO;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1432
+      event.xclient.format = 32;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1433
+      memset (&event.xclient.data, 0, sizeof (event.xclient.data));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1434
+      event.xclient.data.l[0] = (long)(pw->ratio * 100);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1435
+      event.xclient.data.l[1] = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1436
+      event.xclient.data.l[2] = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1437
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1438
+      XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1439
+      old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1440
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1441
+      status = XSendEvent (si->dpy, si->passwd_dialog, False, 0L, &event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1442
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1443
+      XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1444
+      XSetErrorHandler (old_handler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1445
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1446
+      if (!status)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1447
+	fprintf (stderr, "%s: error sending ratio to lock dialog\n", blurb ());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1448
+      
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1449
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1450
+#else /* !HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1451
   update_passwd_window (si, 0, pw->ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1452
+#endif /* !HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1453
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1454
   if (pw->state == pw_read)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1455
     pw->timer = XtAppAddTimeOut (si->app, tick, passwd_animate_timer,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1456
@@ -1147,11 +1421,15 @@ handle_passwd_key (saver_info *si, XKeyE
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1457
         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1458
           update_passwd_window (si, "Checking...", pw->ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1459
           XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1460
-          if (passwd_valid_p (typed_passwd, p->verbose_p))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1461
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1462
+/***************mali99************************************************
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1463
+          if (passwd_valid_p (typed_passwd, p->verbose_p, PAM_SERVICE))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1464
             pw->state = pw_ok;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1465
           else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1466
             pw->state = pw_fail;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1467
           update_passwd_window (si, "", pw->ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1468
+****************************************************************************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1469
+            pw->state = pw_ok;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1470
         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1471
       break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1472
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1473
@@ -1176,7 +1454,7 @@ handle_passwd_key (saver_info *si, XKeyE
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1474
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1475
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1476
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1477
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1478
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1479
 passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1480
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1481
   saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1482
@@ -1187,20 +1465,75 @@ passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1483
   while (si->pw_data && si->pw_data->state == pw_read)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1484
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1485
       XtAppNextEvent (si->app, &event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1486
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1487
+      if (event.xany.type == KeyPress)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1488
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1489
+	  if (si->pw_data->got_windowid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1490
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1491
+	      Bool status;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1492
+	      XErrorHandler old_handler;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1493
+	     
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1494
+              if(p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1495
+               fprintf (stderr, "event loop..gotwindowid..and keypress event...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1496
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1497
+               event.xany.window = si->passwd_dialog;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1498
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1499
+              XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1500
+              old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1501
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1502
+              status = 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1503
+	XSendEvent (si->dpy, si->passwd_dialog, False, KeyPressMask, &event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1504
+              XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1505
+              XSetErrorHandler (old_handler);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1506
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1507
+              if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1508
+                {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1509
+                  if (status)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1510
+                    fprintf (stderr, "sent key...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1511
+                  else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1512
+                    fprintf (stderr, "error sending key...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1513
+                }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1514
+	    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1515
+	  else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1516
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1517
+	      if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1518
+		fprintf (stderr, "got keypress but no window id yet :(\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1519
+	      XtDispatchEvent (&event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1520
+	    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1521
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1522
+#else /* !HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1523
       if (event.xany.window == si->passwd_dialog && event.xany.type == Expose)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1524
 	draw_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1525
       else if (event.xany.type == KeyPress)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1526
 	handle_passwd_key (si, &event.xkey);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1527
+#endif /* !HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1528
+      else if (event.xany.window == si->passwd_dialog && event.xany.type == Expose &&
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1529
+               si->pw_data->passwd_label != NULL)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1530
+       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1531
+          if(p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1532
+            fprintf (stderr, "event loop...and expose event.should update lock with new label...\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1533
+          /***if (si->pw_data->passwd_label)**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1534
+          update_passwd_window (si, si->pw_data->passwd_label, pw->ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1535
+          free (si->pw_data->passwd_label);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1536
+          si->pw_data->passwd_label = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1537
+	  si->pw_data->state = pw_read;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1538
+       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1539
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1540
       else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1541
 	XtDispatchEvent (&event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1542
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1543
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1544
   switch (si->pw_data->state)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1545
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1546
-    case pw_ok:   msg = 0; break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1547
-    case pw_null: msg = ""; break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1548
-    case pw_time: msg = "Timed out!"; break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1549
-    default:      msg = "Sorry!"; break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1550
+    case pw_ok:   msg = strdup("pw_ok"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1551
+    case pw_null: msg = strdup("pw_null"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1552
+    case pw_time: msg = strdup("pw_time"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1553
+    case pw_read: msg = strdup("pw_read"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1554
+    case pw_fail: msg = strdup("pw_fail"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1555
+    case pw_cancel: msg = strdup("pw_cancel"); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1556
+    default:      msg = 0; 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1557
+	fprintf(stderr, "si->pw_data->state is bad, serious error\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1558
+        break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1559
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1560
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1561
   if (si->pw_data->state == pw_fail)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1562
@@ -1210,7 +1543,12 @@ passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1563
     switch (si->pw_data->state)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1564
       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1565
       case pw_ok:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1566
-	fprintf (stderr, "%s: password correct.\n", blurb()); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1567
+       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1568
+	fprintf (stderr, "%s: password correct.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1569
+	fprintf (stderr, "%s: setting state to be null.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1570
+        si->pw_data->state = pw_null;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1571
+        break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1572
+       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1573
       case pw_fail:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1574
 	fprintf (stderr, "%s: password incorrect!\n", blurb()); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1575
       case pw_null:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1576
@@ -1218,7 +1556,8 @@ passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1577
 	fprintf (stderr, "%s: password entry cancelled.\n", blurb()); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1578
       case pw_time:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1579
 	fprintf (stderr, "%s: password entry timed out.\n", blurb()); break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1580
-      default: break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1581
+      default: 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1582
+        break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1583
       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1584
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1585
 #ifdef HAVE_SYSLOG
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1586
@@ -1266,17 +1605,57 @@ passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1587
 	fprintf (real_stderr,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1588
 		 "%s: WARNING: %d failed attempts to unlock the screen.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1589
 		 blurb(), si->unlock_failures);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1590
-      fflush (real_stderr);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1591
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1592
       si->unlock_failures = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1593
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1594
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1595
   if (msg)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1596
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1597
+	  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1598
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1599
+              fprintf (stderr, "..eventloop...msg is:%s\n",msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1600
+            }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1601
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1602
+    /* DONT NEED TO SEND ANY INFO TO CHILD AT THIS STAGE */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1603
+    /*  if (write_to_child (si, msg));**/ /*if write is successful do nothing*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1604
+      free(msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1605
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1606
+      /*********************************************************
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1607
+      if (si->external_passwd && si->pw_data->stdin_fd != -1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1608
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1609
+	  ssize_t len;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1610
+	  char *nlmsg;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1611
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1612
+	  nlmsg = (char *)malloc (strlen (msg) + 2);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1613
+	  sprintf (nlmsg, "%s\n", msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1614
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1615
+	  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1616
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1617
+              fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1618
+              fprintf (stderr, "HAVE_SCRSVR_LOCK message is:%s writing to fd:%d\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1619
+	                 	   msg, si->pw_data->stdin_fd);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1620
+              fprintf (stderr, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1621
+	    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1622
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1623
+	write_msg:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1624
+	  len = write (si->pw_data->stdin_fd, nlmsg, strlen (nlmsg));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1625
+	  if (len < 0 && errno == EINTR)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1626
+	    goto write_msg;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1627
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1628
+	  free (nlmsg);	  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1629
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1630
+      else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1631
+      ******************************************************************************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1632
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1633
+/************
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1634
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1635
       si->pw_data->i_beam = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1636
       update_passwd_window (si, msg, 0.0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1637
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1638
+************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1639
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1640
       XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1641
-      sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1642
+      usleep (250000);  /* 1/4 second */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1643
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1644
       /* Swallow all pending KeyPress/KeyRelease events. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1645
       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1646
@@ -1288,7 +1667,7 @@ passwd_event_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1647
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1648
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1649
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1650
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1651
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1652
 handle_typeahead (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1653
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1654
   passwd_dialog_data *pw = si->pw_data;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1655
@@ -1305,7 +1684,13 @@ handle_typeahead (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1656
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1657
   memset (si->unlock_typeahead, '*', strlen(si->unlock_typeahead));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1658
   si->unlock_typeahead[i] = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1659
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1660
+  /* FIXME: bugzilla.gnome.org #77077 */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1661
+  /* need to handle this in the external dialog case */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1662
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1663
+#else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1664
   update_passwd_window (si, si->unlock_typeahead, pw->ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1665
+#endif /* !HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1666
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1667
   free (si->unlock_typeahead);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1668
   si->unlock_typeahead = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1669
@@ -1321,12 +1706,14 @@ unlock_p (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1670
   raise_window (si, True, True, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1671
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1672
   if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1673
-    fprintf (stderr, "%s: prompting for password.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1674
+    fprintf (stderr, "%s: -->unlock_p()\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1675
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1676
+/*******mali99**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1677
   if (si->pw_data || si->passwd_dialog)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1678
     destroy_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1679
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1680
   make_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1681
+/****mali99*********/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1682
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1683
   compose_status = calloc (1, sizeof (*compose_status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1684
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1685
@@ -1334,7 +1721,8 @@ unlock_p (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1686
   passwd_event_loop (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1687
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1688
   status = (si->pw_data->state == pw_ok);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1689
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1690
   destroy_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1691
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1692
   free (compose_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1693
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1694
--- driver/passwd-kerberos.c	2000-02-27 14:21:41.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1695
+++ driver/passwd-kerberos.c	2006-04-10 13:48:06.182897000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1696
@@ -143,7 +143,7 @@ key_to_key(char *user, char *instance, c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1697
    some sites. So, we do a quick, painful hack with a tmpfile.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1698
  */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1699
 Bool
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1700
-kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1701
+kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p, int whichService)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1702
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1703
     C_Block mitkey;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1704
     Bool success;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1705
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1706
diff -urp -x '*~' driver/passwd-pam.c driver/passwd-pam.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1707
--- driver/passwd-pam.c	2006-05-10 08:48:24.113115000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1708
+++ driver/passwd-pam.c	2006-05-10 08:48:29.973056000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1709
@@ -39,11 +39,18 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1710
 #ifndef NO_LOCKING  /* whole file */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1711
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1712
 #include <stdlib.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1713
+#include <xscreensaver-intl.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1714
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1715
 #ifdef HAVE_UNISTD_H
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1716
 # include <unistd.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1717
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1718
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1719
-extern char *blurb(void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1720
+# ifdef sun
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1721
+#  include <deflt.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1722
+# endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1723
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1724
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1725
+/*extern char *blurb(void);*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1726
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1727
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1728
 #include <stdio.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1729
@@ -55,8 +62,26 @@ extern char *blurb(void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1730
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1731
 #include <sys/stat.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1732
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1733
+#include <X11/Intrinsic.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1734
+#include <X11/Xos.h>            /* for time() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1735
+#include <time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1736
+#include <sys/time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1737
+#include <errno.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1738
+#include <signal.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1739
+#include "xscreensaver.h"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1740
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1741
+extern int write_to_child (saver_info* si, char* msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1742
+extern void make_passwd_window (saver_info* si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1743
+extern void destroy_passwd_window (saver_info* si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1744
+extern void handle_typeahead (saver_info* si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1745
+extern void update_passwd_window (saver_info *si, const char *printed_passwd, float ratio);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1746
 extern void block_sigchld (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1747
 extern void unblock_sigchld (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1748
+extern void passwd_event_loop(saver_info* si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1749
+extern passwd_dialog_data* ptr_mygtkpwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1750
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1751
+extern saver_info *global_si_kludge;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1752
+extern Bool g_passwd_dialog_created;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1753
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1754
 /* blargh */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1755
 #undef  Bool
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1756
@@ -66,6 +91,9 @@ extern void unblock_sigchld (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1757
 #define True  1
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1758
 #define False 0
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1759
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1760
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1761
+Bool we_have_pam;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1762
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1763
 #undef countof
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1764
 #define countof(x) (sizeof((x))/sizeof(*(x)))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1765
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1766
@@ -76,14 +104,14 @@ extern void unblock_sigchld (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1767
 # define PAM_REFRESH_CRED PAM_CRED_REFRESH
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1768
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1769
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1770
-static int pam_conversation (int nmsgs,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1771
-                             const struct pam_message **msg,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1772
+int pam_conversation (int nmsgs,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1773
+                      struct pam_message **msg,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1774
                              struct pam_response **resp,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1775
                              void *closure);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1776
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1777
 struct pam_closure {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1778
   const char *user;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1779
-  const char *typed_passwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1780
+/*  const char *typed_passwd; No need for this, pam_conv should get this*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1781
   Bool verbose_p;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1782
 };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1783
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1784
@@ -171,22 +199,34 @@ static void *suns_pam_implementation_blo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1785
    to root.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1786
  */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1787
 Bool
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1788
-pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1789
+pam_passwd_valid_p ()
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1790
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1791
   const char *service = PAM_SERVICE_NAME;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1792
+  uid_t euid;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1793
   pam_handle_t *pamh = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1794
-  int status = -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1795
+  int pam_auth_status = 0;  /* Specific for pam_authenticate() status*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1796
+  int status,acct_rc,setcred_rc,chauth_rc;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1797
   struct pam_conv pc;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1798
   struct pam_closure c;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1799
   char *user = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1800
+  char* tmp_buf;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1801
+  int  pam_flags = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1802
+  saver_info *si = global_si_kludge;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1803
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1804
   struct passwd *p = getpwuid (getuid ());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1805
+  Bool verbose_p = si->prefs.verbose_p;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1806
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1807
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1808
+    fprintf (stderr, "-->pam_passwd_valid_p()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1809
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1810
   if (!p) return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1811
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1812
+  euid = geteuid();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1813
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1814
   user = strdup (p->pw_name);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1815
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1816
   c.user = user;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1817
-  c.typed_passwd = typed_passwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1818
+/**  c.typed_passwd = NULL; **/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1819
   c.verbose_p = verbose_p;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1820
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1821
   pc.conv = &pam_conversation;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1822
@@ -196,6 +236,20 @@ pam_passwd_valid_p (const char *typed_pa
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1823
      `closure' argument to pc.conv always comes in as random garbage. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1824
   suns_pam_implementation_blows = (void *) &c;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1825
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1826
+  if (si->prefs.verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1827
+    fprintf (stderr, "Before uid=%d euid=%d \n\n", getuid(), geteuid());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1828
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1829
+ if (seteuid (0) != 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1830
+  {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1831
+   if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1832
+     perror("Could not change euid to root, pam may not work!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1833
+  }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1834
+  
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1835
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1836
+   fprintf (stderr, "After seteuid(0) uid=%d euid=%d \n\n", getuid(), geteuid());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1837
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1838
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1839
+   fprintf (stderr, "PAM is using SERVICE_NAME=\"%s\"\n\n", service);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1840
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1841
   /* Initialize PAM.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1842
    */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1843
@@ -204,21 +258,61 @@ pam_passwd_valid_p (const char *typed_pa
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1844
     fprintf (stderr, "%s: pam_start (\"%s\", \"%s\", ...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1845
              blurb(), service, c.user,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1846
              status, PAM_STRERROR (pamh, status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1847
-  if (status != PAM_SUCCESS) goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1848
+  if (status != PAM_SUCCESS) 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1849
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1850
+    we_have_pam = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1851
+    goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1852
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1853
+  else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1854
+    we_have_pam = True; /* if this flag is set we dont want to try shadow
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1855
+			 * passwords, i.e. method pwent, so if pam fails
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1856
+			 * screen remains locked.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1857
+      			 ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1858
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1859
+/* copying from xlock */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1860
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1861
+#ifdef sun
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1862
+        /* Check /etc/default/login to see if we should add
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1863
+           PAM_DISALLOW_NULL_AUTHTOK to pam_flags */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1864
+        if (defopen("/etc/default/login") == 0) {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1865
+            char *ptr;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1866
+            int flags = defcntl(DC_GETFLAGS, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1867
+            TURNOFF(flags, DC_CASE);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1868
+            (void) defcntl(DC_SETFLAGS, flags);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1869
+            if ((ptr = defread("PASSREQ=")) != NULL &&
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1870
+              strcasecmp("YES", ptr) == 0) {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1871
+                pam_flags |= PAM_DISALLOW_NULL_AUTHTOK;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1872
+            }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1873
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1874
+            (void) defopen((char *)NULL); /* close current file */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1875
+        }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1876
+#endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1877
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1878
   /* #### We should set PAM_TTY to the display we're using, but we
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1879
      don't have that handy from here.  So set it to :0.0, which is a
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1880
      good guess (and has the bonus of counting as a "secure tty" as
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1881
      far as PAM is concerned...)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1882
    */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1883
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1884
+/* From the pam trace and log file, it is found out that the 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1885
+   Sun pam modules can drive itself.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1886
+*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1887
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1888
+#if 0
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1889
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1890
   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1891
-    char *tty = strdup (":0.0");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1892
+    char *tty,*displayname;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1893
+    if ((displayname = getenv ("DISPLAY")) != NULL)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1894
+        tty = strdup(displayname);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1895
+    else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1896
+   	tty = strdup (":0.0");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1897
     status = pam_set_item (pamh, PAM_TTY, tty);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1898
     if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1899
       fprintf (stderr, "%s:   pam_set_item (p, PAM_TTY, \"%s\") ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1900
                blurb(), tty, status, PAM_STRERROR(pamh, status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1901
     free (tty);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1902
   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1903
+#endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1904
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1905
   /* Try to authenticate as the current user.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1906
      We must turn off our SIGCHLD handler for the duration of the call to
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1907
@@ -242,31 +336,132 @@ pam_passwd_valid_p (const char *typed_pa
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1908
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1909
   PAM_NO_DELAY(pamh);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1910
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1911
+/************* no need
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1912
+  fprintf(stderr,"before calling pam_authenticate passwd_string: %s\n",si->pw_data->passwd_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1913
+  if (si->pw_data->passwd_string)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1914
+****************************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1915
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1916
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1917
   block_sigchld();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1918
-  status = pam_authenticate (pamh, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1919
+     pam_auth_status = pam_authenticate (pamh, pam_flags);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1920
   unblock_sigchld();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1921
+     /* Send status message to unlock dialog ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1922
+     if (pam_auth_status == PAM_SUCCESS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1923
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1924
+        write_to_child (si, "pw_ok");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1925
+        tmp_buf = (char*)PAM_STRERROR(pamh, pam_auth_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1926
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1927
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1928
+          sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1929
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1930
+     else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1931
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1932
+        write_to_child (si, "pw_fail");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1933
+        tmp_buf = (char*)PAM_STRERROR(pamh, pam_auth_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1934
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1935
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1936
+          sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1937
+        else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1938
+          usleep (500000); /*sleep for 1/2 of sec */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1939
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1940
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1941
+     /* PAM_SUCCESS defined to be 0 in /usr/include/security/pam_appl.h */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1942
+     si->pw_data->state = (pam_auth_status == PAM_SUCCESS ? pw_ok : pw_fail);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1943
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1944
+        fprintf(stderr,"after calling pam_authenticate status is:%d state is:%d\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1945
+			pam_auth_status,si->pw_data->state);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1946
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1947
+     /* We get here implies regardless of success/failure nuke lock dialog */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1948
+     /* no..wait till pam_end..to display error msgs...destroy_passwd_window (si);**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1949
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1950
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1951
   if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1952
     fprintf (stderr, "%s:   pam_authenticate (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1953
-             blurb(), status, PAM_STRERROR(pamh, status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1954
-  if (status == PAM_SUCCESS)  /* Win! */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1955
+             blurb(), pam_auth_status, PAM_STRERROR(pamh, pam_auth_status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1956
+  if (pam_auth_status == PAM_SUCCESS)  /* Win! */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1957
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1958
+        /* perform PAM account validation procedures for login user only */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1959
+	acct_rc   = pam_acct_mgmt(pamh, pam_flags);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1960
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1961
+        /******************************************************************
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1962
+           ignore other cases for the time being 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1963
+           PAM_USER_UNKNOWN, PAM_AUTH_ERR, PAM_ACCT_EXPIRED
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1964
+           (password mgn service module)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1965
+           same as pam_setcred(), focus on auth. service module only
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1966
+         *****************************************************************/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1967
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1968
+	if (acct_rc   == PAM_NEW_AUTHTOK_REQD) {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1969
+		do {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1970
+			chauth_rc  = pam_chauthtok(pamh, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1971
+                    } while (chauth_rc == PAM_AUTHTOK_ERR ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1972
+                      chauth_rc  == PAM_TRY_AGAIN);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1973
+      		if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1974
+        	  fprintf (stderr, "%s:   pam_chauthtok (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1975
+                 blurb(), chauth_rc, PAM_STRERROR(pamh, chauth_rc));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1976
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1977
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1978
+        fprintf (stderr, "%s:   pam_acct_mgmt (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1979
+                 blurb(), acct_rc, PAM_STRERROR(pamh, acct_rc));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1980
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1981
+     /* Send status message to unlock dialog ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1982
+     if (acct_rc == PAM_SUCCESS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1983
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1984
+        write_to_child (si, "pw_acct_ok");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1985
+        tmp_buf = (char*)PAM_STRERROR(pamh, acct_rc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1986
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1987
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1988
+          sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1989
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1990
+     else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1991
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1992
+        write_to_child (si, "pw_acct_fail");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1993
+        tmp_buf = (char*)PAM_STRERROR(pamh, acct_rc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1994
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1995
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1996
+          sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1997
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1998
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  1999
       /* Each time we successfully authenticate, refresh credentials,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2000
          for Kerberos/AFS/DCE/etc.  If this fails, just ignore that
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2001
          failure and blunder along; it shouldn't matter.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2002
        */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2003
-      int status2 = pam_setcred (pamh, PAM_REFRESH_CRED);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2004
+      setcred_rc = pam_setcred (pamh, PAM_REFRESH_CRED);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2005
       if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2006
         fprintf (stderr, "%s:   pam_setcred (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2007
-                 blurb(), status2, PAM_STRERROR(pamh, status2));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2008
+                 blurb(), setcred_rc , PAM_STRERROR(pamh, setcred_rc));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2009
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2010
+     /* Send status message to unlock dialog ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2011
+     if (setcred_rc == PAM_SUCCESS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2012
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2013
+        write_to_child (si, "pw_setcred_ok");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2014
+        tmp_buf = (char*)PAM_STRERROR(pamh, setcred_rc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2015
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2016
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2017
+           sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2018
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2019
+     else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2020
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2021
+        write_to_child (si, "pw_setcred_fail");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2022
+        tmp_buf = (char*)PAM_STRERROR(pamh, setcred_rc);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2023
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2024
+        if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2025
+          sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2026
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2027
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2028
       goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2029
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2030
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2031
+/* security hole if root pwd is not set (or CR)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2032
+   cannot delete it and is user function spec.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2033
+*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2034
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2035
   /* If that didn't work, set the user to root, and try to authenticate again.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2036
    */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2037
   if (user) free (user);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2038
   user = strdup ("root");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2039
   c.user = user;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2040
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2041
+  status = -1;  	/* Reset status */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2042
   status = pam_set_item (pamh, PAM_USER, c.user);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2043
   if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2044
     fprintf (stderr, "%s:   pam_set_item(p, PAM_USER, \"%s\") ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2045
@@ -274,23 +469,72 @@ pam_passwd_valid_p (const char *typed_pa
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2046
   if (status != PAM_SUCCESS) goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2047
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2048
   PAM_NO_DELAY(pamh);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2049
-  status = pam_authenticate (pamh, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2050
+  pam_auth_status = -1;  	/* Reset status */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2051
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2052
+  block_sigchld();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2053
+  pam_auth_status = pam_authenticate (pamh, 0);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2054
+  unblock_sigchld();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2055
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2056
+/* Send status message to unlock dialog ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2057
+     if (pam_auth_status == PAM_SUCCESS)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2058
+      {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2059
+        write_to_child (si, "pw_ok");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2060
+        tmp_buf = strdup (_("Letting you in as ROOT!!"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2061
+        write_to_child (si, tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2062
+        free (tmp_buf);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2063
   if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2064
-    fprintf (stderr, "%s:   pam_authenticate (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2065
-             blurb(), status, PAM_STRERROR(pamh, status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2066
+         sleep (1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2067
+      }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2068
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2069
+  /* PAM_SUCCESS defined to be 0 in /usr/include/security/pam_appl.h */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2070
+  si->pw_data->state = (pam_auth_status == PAM_SUCCESS ? pw_ok : pw_fail);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2071
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2072
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2073
+    fprintf (stderr, "%s:   pam_authenticate as root user (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2074
+             blurb(), pam_auth_status, PAM_STRERROR(pamh, pam_auth_status));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2075
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2076
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2077
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2078
  DONE:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2079
   if (user) free (user);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2080
   if (pamh)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2081
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2082
-      int status2 = pam_end (pamh, status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2083
+      int status2 = pam_end (pamh, pam_auth_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2084
       pamh = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2085
       if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2086
         fprintf (stderr, "%s: pam_end (...) ==> %d (%s)\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2087
                  blurb(), status2,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2088
                  (status2 == PAM_SUCCESS ? "Success" : "Failure"));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2089
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2090
-  return (status == PAM_SUCCESS ? True : False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2091
+ 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2092
+  if (seteuid (euid) != 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2093
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2094
+    if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2095
+      perror("Error pam could not revert euid to user running as euid root, locking may not work now\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2096
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2097
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2098
+  if (verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2099
+     fprintf (stderr, "<--end of pam_authenticate() returning ok_to_unblank = %d\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2100
+                            (int) ((pam_auth_status == PAM_SUCCESS) ? True:False));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2101
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2102
+  /* Now destroy unlock dialog window created in pam_conv func ***/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2103
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2104
+  destroy_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2105
+  usleep (250000); /* if repeatedly tried to unlock dialog with bad passwd, old dialog
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2106
+                    * doesnt get completely unmapped before new one posts, this should
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2107
+                    * help the unmapping to go through before new one is posted */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2108
+  XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2109
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2110
+  if (si->pw_data->passwd_string)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2111
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2112
+    free (si->pw_data->passwd_string); 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2113
+    si->pw_data->passwd_string = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2114
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2115
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2116
+  if(pam_auth_status == PAM_SUCCESS) 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2117
+     return (True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2118
+  else 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2119
+     return (False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2120
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2121
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2122
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2123
@@ -308,8 +552,14 @@ pam_priv_init (int argc, char **argv, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2124
   const char   dir[] = "/etc/pam.d";
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2125
   const char  file[] = "/etc/pam.d/" PAM_SERVICE_NAME;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2126
   const char file2[] = "/etc/pam.conf";
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2127
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2128
   struct stat st;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2129
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2130
+  if (! verbose_p)	/* SUN addition: only print warnings in verbose mode */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2131
+    {			/* since they are rarely useful and mostly just      */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2132
+      return True;	/* cause confusion when users see them.		     */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2133
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2134
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2135
 #ifndef S_ISDIR
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2136
 # define S_ISDIR(mode)   (((mode) & S_IFMT) == S_IFDIR)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2137
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2138
@@ -336,6 +586,9 @@ pam_priv_init (int argc, char **argv, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2139
                 break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2140
               }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2141
           fclose (f);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2142
+          
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2143
+/* 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2144
+** comment out the misleading message
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2145
           if (!ok)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2146
             {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2147
               fprintf (stderr,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2148
@@ -343,9 +596,12 @@ pam_priv_init (int argc, char **argv, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2149
                   "%s: password authentication via PAM is unlikely to work.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2150
                        blurb(), file2, PAM_SERVICE_NAME, blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2151
             }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2152
+*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2153
         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2154
       /* else warn about file2 existing but being unreadable? */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2155
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2156
+/*
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2157
+** comment out the misleading message
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2158
   else
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2159
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2160
       fprintf (stderr,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2161
@@ -353,6 +609,7 @@ pam_priv_init (int argc, char **argv, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2162
                "%s: password authentication via PAM is unlikely to work.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2163
                blurb(), file2, file, blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2164
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2165
+*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2166
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2167
   /* Return true anyway, just in case. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2168
   return True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2169
@@ -373,67 +630,144 @@ pam_priv_init (int argc, char **argv, Bo
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2170
    would never see this string, and the prompted-for password would be
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2171
    ignored.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2172
  */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2173
-static int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2174
+int
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2175
 pam_conversation (int nmsgs,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2176
-                  const struct pam_message **msg,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2177
+                  struct pam_message **msg,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2178
                   struct pam_response **resp,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2179
                   void *closure)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2180
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2181
   int replies = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2182
   struct pam_response *reply = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2183
   struct pam_closure *c = (struct pam_closure *) closure;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2184
+  saver_info *si = global_si_kludge;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2185
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2186
   /* On SunOS 5.6, the `closure' argument always comes in as random garbage. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2187
   c = (struct pam_closure *) suns_pam_implementation_blows;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2188
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2189
+  if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2190
+     fprintf(stderr, "-->pam_conv() \n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2191
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2192
   reply = (struct pam_response *) calloc (nmsgs, sizeof (*reply));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2193
   if (!reply) return PAM_CONV_ERR;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2194
 	
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2195
   for (replies = 0; replies < nmsgs; replies++)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2196
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2197
+     /* Means pam requires interaction..spawn dialog dont use unlock_p() here
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2198
+      * Another issue is pam conv can be called many times by pam, for pam_auth
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2199
+      * and then again for pam_setcred etc.. so make sure we dont keep creating
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2200
+      * multiple copies of dialog. 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2201
+      */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2202
+        if (!g_passwd_dialog_created)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2203
+         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2204
+           make_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2205
+         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2206
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2207
+/**fprintf(stderr, "top of switch %d\n", replies);**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2208
       switch (msg[replies]->msg_style)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2209
         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2210
         case PAM_PROMPT_ECHO_ON:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2211
-          reply[replies].resp_retcode = PAM_SUCCESS;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2212
-          reply[replies].resp = strdup (c->user);	   /* freed by PAM */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2213
-          if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2214
-            fprintf (stderr, "%s:     PAM ECHO_ON(\"%s\") ==> \"%s\"\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2215
-                     blurb(), msg[replies]->msg,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2216
-                     reply[replies].resp);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2217
-          break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2218
         case PAM_PROMPT_ECHO_OFF:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2219
-          reply[replies].resp_retcode = PAM_SUCCESS;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2220
-          reply[replies].resp = strdup (c->typed_passwd);   /* freed by PAM */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2221
+         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2222
           if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2223
             fprintf (stderr, "%s:     PAM ECHO_OFF(\"%s\") ==> password\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2224
                      blurb(), msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2225
-          break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2226
-        case PAM_TEXT_INFO:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2227
-          /* ignore it... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2228
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2229
+          /**fprintf(stderr, "PAM_ECHO_OFF/ECHO_ON nmsgs=%d\n",nmsgs);**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2230
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2231
+             write_to_child (si, msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2232
+             if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2233
+              sleep (1); /* let user see these */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2234
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2235
+             if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2236
+                fprintf(stderr, "PAM_ECHO_OFF/ECHO_ON msg[replies]-> %s\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2237
+					msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2238
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2239
+             si->pw_data->state = pw_read;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2240
+             while (!si->pw_data->got_windowid && si->pw_data->state == pw_read)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2241
+              {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2242
+               if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2243
+                 fprintf(stderr,"WAiting for window id from lock dialog\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2244
+               handle_typeahead (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2245
+               passwd_event_loop (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2246
+               if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2247
+                 fprintf(stderr,"<---passwd_event_loop() state =%d\n",si->pw_data->state);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2248
+              }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2249
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2250
           reply[replies].resp_retcode = PAM_SUCCESS;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2251
-          reply[replies].resp = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2252
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2253
+             /*Make sure user inputs a response..and dialog is not timiing out **/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2254
+             if (si->pw_data->state != pw_time && si->pw_data->passwd_string != NULL)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2255
+              {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2256
+               reply[replies].resp = strdup (si->pw_data->passwd_string);/*freed by PAM*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2257
           if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2258
-            fprintf (stderr, "%s:     PAM TEXT_INFO(\"%s\") ==> ignored\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2259
-                     blurb(), msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2260
+                 fprintf(stderr, "in ECHO OFF and got a passwd..:%s\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2261
+                                       si->pw_data->passwd_string);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2262
+              }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2263
+             else /* Perhaps user does not want to enter input, dialog times out */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2264
+              {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2265
+               /* this shouldnt happen...perhaps sending null passwd to pam is 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2266
+	        * best for now**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2267
+               /* reply[replies].resp = 0;Dont send any resp*/ /* freed by PAM */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2268
+               /* Reset state to fail */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2269
+               si->pw_data->state = pw_fail;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2270
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2271
+               if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2272
+                {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2273
+                  fprintf(stderr, "Dude sending null password to pam..\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2274
+                  fprintf(stderr,"We didnt receive any input from user!!!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2275
+                }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2276
+              }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2277
           break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2278
+         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2279
+        case PAM_TEXT_INFO:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2280
         case PAM_ERROR_MSG:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2281
-          /* ignore it... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2282
-          reply[replies].resp_retcode = PAM_SUCCESS;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2283
-          reply[replies].resp = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2284
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2285
+	 char* tmp_msg;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2286
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2287
+          /* display messages coming from pam... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2288
+          /* we should have dialog up still to show this */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2289
           if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2290
-            fprintf (stderr, "%s:     PAM ERROR_MSG(\"%s\") ==> ignored\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2291
-                     blurb(), msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2292
+            fprintf(stderr, "PAM_ERROR/PAM_TEXT_INFO nmsgs=%d\n",nmsgs);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2293
+          if (!g_passwd_dialog_created)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2294
+           {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2295
+            make_passwd_window (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2296
+            /*sleep (1);*/ /*make sure window is created by now **/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2297
+           }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2298
+          tmp_msg = strdup (msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2299
+          write_to_child (si, tmp_msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2300
+          sleep(1);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2301
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2302
+          if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2303
+            fprintf(stderr, "PAM_ERROR/PAM_TEXT_INFO msg[%d]-> %s\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2304
+					replies,msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2305
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2306
+          reply[replies].resp_retcode = PAM_CONV_ERR;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2307
+          /*reply[replies].resp = 0;*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2308
+          /* Reset state to read */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2309
+          si->pw_data->state = pw_read;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2310
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2311
+          free(tmp_msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2312
           break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2313
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2314
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2315
         default:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2316
-          /* Must be an error of some sort... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2317
-          free (reply);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2318
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2319
+         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2320
+           int i;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2321
           if (c->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2322
-            fprintf (stderr, "%s:     PAM unknown %d(\"%s\") ==> ignored\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2323
+            fprintf (stderr, "%s:     PAM unknown %d(\"%s\") ==> ERROR..default case:\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2324
                      blurb(), msg[replies]->msg_style, msg[replies]->msg);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2325
+          /* Must be an error of some sort... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2326
+            for (i = 0; i < replies; i++)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2327
+                    if (reply[replies].resp != NULL)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2328
+                            free (reply[replies].resp);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2329
+            free (reply);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2330
+            reply = NULL;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2331
           return PAM_CONV_ERR;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2332
-        }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2333
-    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2334
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2335
+          } /* end default */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2336
+        } /* end switch */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2337
+    } /* end for loop */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2338
   *resp = reply;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2339
   return PAM_SUCCESS;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2340
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2341
diff -urp -x '*~' driver/passwd.c driver/passwd.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2342
--- driver/passwd.c	2002-03-05 18:15:47.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2343
+++ driver/passwd.c	2006-05-10 08:48:29.955519000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2344
@@ -49,15 +49,15 @@ struct auth_methods {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2345
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2346
 #ifdef HAVE_KERBEROS
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2347
 extern Bool kerberos_lock_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2348
-extern Bool kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2349
+extern Bool kerberos_passwd_valid_p (const char *typed_passwd, Bool verbose_p, int whichService);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2350
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2351
 #ifdef HAVE_PAM
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2352
 extern Bool pam_priv_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2353
-extern Bool pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2354
+extern Bool pam_passwd_valid_p (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2355
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2356
 extern Bool pwent_lock_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2357
 extern Bool pwent_priv_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2358
-extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2359
+extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p, int whichService);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2360
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2361
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2362
 /* The authorization methods to try, in order.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2363
@@ -73,9 +73,10 @@ struct auth_methods methods[] = {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2364
 # ifdef HAVE_PAM
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2365
   { "PAM",              0, pam_priv_init, pam_passwd_valid_p, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2366
                         False, False },
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2367
-# endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2368
+# else    /* If we dont have PAM only then fall back to shadow passwords authentication */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2369
   { "normal",           pwent_lock_init, pwent_priv_init, pwent_passwd_valid_p,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2370
                         False, False }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2371
+# endif  /* HAVE_PAM */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2372
 };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2373
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2374
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2375
diff -urp -x '*~' driver/setuid.c driver/setuid.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2376
--- driver/setuid.c	2000-11-08 05:13:18.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2377
+++ driver/setuid.c	2006-05-10 08:48:29.941707000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2378
@@ -15,6 +15,7 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2379
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2380
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2381
 #include <X11/Xlib.h>		/* not used for much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2382
+#include <X11/Intrinsic.h>		/* not used for much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2383
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2384
 /* This file doesn't need the Xt headers, so stub these types out... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2385
 #undef XtPointer
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2386
@@ -101,7 +102,10 @@ set_ids_by_number (uid_t uid, gid_t gid,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2387
     gid_errno = errno ? errno : -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2388
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2389
   errno = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2390
-  if (setuid (uid) != 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2391
+/*mali  if (setuid (uid) != 0)**we need root privs back at pam_authenticate
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2392
+  this is causing to loose root priv for good, not good **/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2393
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2394
+ if (seteuid (uid) != 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2395
     uid_errno = errno ? errno : -1;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2396
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2397
   if (uid_errno == 0 && gid_errno == 0)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2398
diff -urp -x '*~' driver/subprocs.c driver/subprocs.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2399
--- driver/subprocs.c	2006-05-10 08:48:24.156389000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2400
+++ driver/subprocs.c	2006-05-10 08:48:29.955074000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2401
@@ -20,6 +20,7 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2402
 #include <string.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2403
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2404
 #include <X11/Xlib.h>		/* not used for much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2405
+#include <X11/Intrinsic.h>		/* not used for much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2406
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2407
 #ifndef ESRCH
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2408
 # include <errno.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2409
@@ -277,7 +278,7 @@ find_job (pid_t pid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2410
   return 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2411
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2412
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2413
-static void await_dying_children (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2414
+void await_dying_children (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2415
 #ifndef VMS
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2416
 static void describe_dead_child (saver_info *, pid_t, int wait_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2417
 #endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2418
@@ -413,7 +414,7 @@ sigchld_handler (int sig)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2419
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2420
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2421
 #ifndef VMS
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2422
-static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2423
+void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2424
 await_dying_children (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2425
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2426
   while (1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2427
@@ -468,9 +469,15 @@ describe_dead_child (saver_info *si, pid
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2428
 	 mention them) if we've just killed the subprocess.  But mention them
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2429
 	 if they happen on their own.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2430
        */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2431
-      if (!job ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2432
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2433
+      if ((!job 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2434
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2435
+	   && kid != si->passwd_pid
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2436
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2437
+		  ) ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2438
 	  (exit_status != 0 &&
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2439
-	   (p->verbose_p || job->status != job_killed)))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2440
+	   (p->verbose_p || (job && job->status != job_killed))))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2441
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2442
 	fprintf (stderr,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2443
 		 "%s: %d: child pid %lu (%s) exited abnormally (code %d).\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2444
 		 blurb(), screen_no, (unsigned long) kid, name, exit_status);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2445
@@ -484,8 +491,12 @@ describe_dead_child (saver_info *si, pid
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2446
   else if (WIFSIGNALED (wait_status))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2447
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2448
       if (p->verbose_p ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2449
-	  !job ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2450
-	  job->status != job_killed ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2451
+	  (!job
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2452
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2453
+	   && kid != si->passwd_pid
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2454
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2455
+		  ) ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2456
+	  (job && job->status != job_killed) ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2457
 	  WTERMSIG (wait_status) != SIGTERM)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2458
 	fprintf (stderr, "%s: %d: child pid %lu (%s) terminated with %s.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2459
 		 blurb(), screen_no, (unsigned long) kid, name,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2460
@@ -515,12 +526,23 @@ describe_dead_child (saver_info *si, pid
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2461
   /* Clear out the pid so that screenhack_running_p() knows it's dead.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2462
    */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2463
   if (!job || job->status == job_dead)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2464
+    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2465
     for (i = 0; i < si->nscreens; i++)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2466
       {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2467
 	saver_screen_info *ssi = &si->screens[i];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2468
 	if (kid == ssi->pid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2469
 	  ssi->pid = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2470
       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2471
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2472
+      if (kid == si->passwd_pid)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2473
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2474
+/*unsafe	  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2475
+	    fprintf (stderr, "passwd dialog died!\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2476
+**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2477
+	  si->passwd_pid = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2478
+	}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2479
+#endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2480
+    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2481
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2482
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2483
 #else  /* VMS */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2484
diff -urp -x '*~' driver/timers.c driver/timers.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2485
--- driver/timers.c	2002-05-10 03:40:32.000000000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2486
+++ driver/timers.c	2006-05-10 08:48:29.940928000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2487
@@ -49,6 +49,12 @@ static Bool proc_interrupts_activity_p (
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2488
 #endif /* HAVE_PROC_INTERRUPTS */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2489
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2490
 static void check_for_clock_skew (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2491
+static void watchdog_timer (XtPointer closure, XtIntervalId *id);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2492
+extern Bool g_passwd_dialog_created;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2493
+extern Bool ok_to_unblank;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2494
+extern Bool pam_passwd_valid_p(void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2495
+extern Bool blank_screen (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2496
+extern void unblank_screen (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2497
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2498
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2499
 void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2500
@@ -229,7 +235,8 @@ cycle_timer (XtPointer closure, XtInterv
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2501
        crash.  So, restart the thing once an hour. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2502
     how_long = 1000 * 60 * 60;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2503
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2504
-  if (si->dbox_up_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2505
+/**mali99  if (si->dbox_up_p)*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2506
+   if (si->external_passwd)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2507
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2508
       if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2509
 	fprintf (stderr, "%s: dialog box up; delaying hack change.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2510
@@ -277,8 +284,20 @@ activate_lock_timer (XtPointer closure, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2511
   saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2512
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2513
   if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2514
-    fprintf (stderr, "%s: timed out; activating lock.\n", blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2515
+    fprintf (stderr, "-->activate_lock_timer() %s: timed out; activating lock.\n", 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2516
+					blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2517
+  if (si->screen_blanked_p) /* Make sure screen is blanked before posting dialogbox*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2518
+   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2519
   set_locked_p (si, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2520
+    ok_to_unblank = pam_passwd_valid_p();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2521
+    if (ok_to_unblank == True) 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2522
+     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2523
+      set_locked_p(si,False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2524
+      unblank_screen(si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2525
+}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2526
+   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2527
+  else /* blanking of screen failed reset lock flag */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2528
+    set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2529
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2530
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2531
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2532
@@ -684,7 +703,10 @@ sleep_until_idle (saver_info *si, Bool u
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2533
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2534
       case ClientMessage:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2535
 	if (handle_clientmessage (si, &event, until_idle_p))
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2536
+         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2537
+          si->emergency_lock_p = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2538
 	  goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2539
+         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2540
 	break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2541
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2542
       case CreateNotify:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2543
@@ -697,8 +719,47 @@ sleep_until_idle (saver_info *si, Bool u
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2544
 	  }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2545
 	break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2546
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2547
+      case VisibilityNotify:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2548
+	{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2549
+	  int k;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2550
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2551
+          if (p->debug_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2552
+	   {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2553
+            fprintf(stderr,"************************************\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2554
+	    fprintf(stderr,"-->sleep_until_idle() event:VisibilityNotify\n"); 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2555
+            fprintf(stderr,"\t Window of VisibilityNotify:%x\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2556
+				event.xvisibility.window);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2557
+            fprintf(stderr,"\t until_idle_p=%d g_passwd_dialog_created=%d\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2558
+				until_idle_p, g_passwd_dialog_created);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2559
+	    fflush(stderr);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2560
+	   }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2561
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2562
+	  /*Dont raise root window when passwd dialog wants to come up */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2563
+	  if (g_passwd_dialog_created == 0 && !until_idle_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2564
+	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2565
+	      if (event.xvisibility.state != VisibilityUnobscured)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2566
+		{
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2567
+		  for (k = 0; k < si->nscreens; k++)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2568
+		    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2569
+		      saver_screen_info *ssi = &si->screens[k];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2570
+		      XClearWindow (si->dpy, ssi->screensaver_window);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2571
+		      clear_stderr (ssi);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2572
+		      XMapRaised (si->dpy, ssi->screensaver_window);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2573
+		    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2574
+		  if (p->debug_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2575
+		    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2576
+		      fprintf (stderr,"A window is trying to popup.\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2577
+		      fprintf(stderr, "Raising saver root Window.\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2578
+		      fprintf(stderr,"************************************\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2579
+		      fflush(stderr);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2580
+		    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2581
+		}
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2582
+	    }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2583
+	  break;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2584
+	} 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2585
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2586
       case KeyPress:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2587
-      case KeyRelease:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2588
+/*mali99      case KeyRelease:**/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2589
       case ButtonPress:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2590
       case ButtonRelease:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2591
       case MotionNotify:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2592
@@ -1152,7 +1213,8 @@ watchdog_timer (XtPointer closure, XtInt
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2593
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2594
       Bool running_p = screenhack_running_p (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2595
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2596
-      if (si->dbox_up_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2597
+      /**mali9 if (si->dbox_up_p)****/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2598
+      if (si->external_passwd)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2599
         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2600
           if (si->prefs.debug_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2601
             fprintf (stderr, "%s: dialog box is up: not raising screen.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2602
diff -urp -x '*~' driver/windows.c driver/windows.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2603
--- driver/windows.c	2002-05-28 17:42:12.000000000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2604
+++ driver/windows.c	2006-05-10 08:48:29.939107000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2605
@@ -35,6 +35,7 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2606
 #include <X11/Xutil.h>		/* for XSetClassHint() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2607
 #include <X11/Xatom.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2608
 #include <X11/Xos.h>		/* for time() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2609
+#include <X11/Intrinsic.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2610
 #include <signal.h>		/* for the signal names */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2611
 #include <time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2612
 #include <sys/time.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2613
@@ -1230,6 +1231,7 @@ initialize_screensaver_window_1 (saver_s
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2614
    */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2615
   attrs.event_mask = (KeyPressMask | KeyReleaseMask |
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2616
 		      ButtonPressMask | ButtonReleaseMask |
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2617
+		      VisibilityChangeMask |
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2618
 		      PointerMotionMask);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2619
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2620
   attrs.backing_store = NotUseful;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2621
@@ -1397,6 +1399,9 @@ raise_window (saver_info *si,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2622
   saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2623
   int i;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2624
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2625
+  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2626
+      fprintf(stderr,"-->raise_window()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2627
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2628
   if (si->demoing_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2629
     inhibit_fade = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2630
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2631
@@ -1604,6 +1609,9 @@ unblank_screen (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2632
   Bool unfade_p = (si->fading_possible_p && p->unfade_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2633
   int i;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2634
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2635
+  if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2636
+      fprintf(stderr,"-->unblank_screen()\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2637
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2638
   monitor_power_on (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2639
   reset_watchdog_timer (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2640
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2641
diff -urp -x '*~' driver/xscreensaver.c driver/xscreensaver.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2642
--- driver/xscreensaver.c	2006-05-10 08:48:24.232166000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2643
+++ driver/xscreensaver.c	2006-05-10 08:48:29.979552000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2644
@@ -156,8 +156,21 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2645
 #include "visual.h"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2646
 #include "usleep.h"
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2647
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2648
+extern Bool pam_passwd_valid_p ();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2649
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2650
 saver_info *global_si_kludge = 0;	/* I hate C so much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2651
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2652
+/* Globals */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2653
+Bool ok_to_unblank = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2654
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2655
+/* Global storage for gtk passwd lock dialog 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2656
+ * we assign this to si->pw_data and this is needed
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2657
+ * to set user/passwd labels on gtk lock dialog by
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2658
+ * pam conv function.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2659
+ */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2660
+passwd_dialog_data mygtkpwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2661
+passwd_dialog_data *ptr_mygtkpwd = &mygtkpwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2662
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2663
 char *progname = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2664
 char *progclass = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2665
 XrmDatabase db = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2666
@@ -168,6 +181,7 @@ static Atom XA_ACTIVATE, XA_DEACTIVATE, 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2667
 static Atom XA_RESTART, XA_SELECT;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2668
 static Atom XA_THROTTLE, XA_UNTHROTTLE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2669
 Atom XA_DEMO, XA_PREFS, XA_EXIT, XA_LOCK, XA_BLANK;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2670
+Atom XA_UNLOCK_RATIO;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2671
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2672
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2673
 static XrmOptionDescRec options [] = {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2674
@@ -555,6 +569,7 @@ connect_to_server (saver_info *si, int *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2675
   XA_BLANK = XInternAtom (si->dpy, "BLANK", False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2676
   XA_THROTTLE = XInternAtom (si->dpy, "THROTTLE", False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2677
   XA_UNTHROTTLE = XInternAtom (si->dpy, "UNTHROTTLE", False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2678
+  XA_UNLOCK_RATIO = XInternAtom (si->dpy, "UNLOCK_RATIO", False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2679
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2680
   return toplevel_shell;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2681
 }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2682
@@ -951,7 +966,7 @@ static void
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2683
 main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2684
 {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2685
   saver_preferences *p = &si->prefs;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2686
-  Bool ok_to_unblank;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2687
+  /* Bool ok_to_unblank; made this a global flag, gets set in timers.c */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2688
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2689
   while (1)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2690
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2691
@@ -982,6 +997,14 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2692
             fprintf (stderr, "%s: idle with blanking disabled at %s.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2693
                      blurb(), timestring());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2694
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2695
+          /* mali Bug 6221109 Changing mode from disable to anything else,doesnt lock screen.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2696
+           * This is Disable Screen Saver mode, in this mode we dont lock screen
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2697
+           * but si->locked_p is already set to True, since someone tried to lock screen,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2698
+           * reset it to False, else when we change mode from disable and try to lock screen,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2699
+           * xscreensaver thinks screen is already locked and doesnt lock screen anymore.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2700
+           */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2701
+          set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2702
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2703
           /* Go around the loop and wait for the next bout of idleness,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2704
              or for the init file to change, or for a remote command to
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2705
              come in, or something.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2706
@@ -1005,6 +1028,7 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2707
           fprintf (stderr,
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2708
                   "%s: unable to grab keyboard or mouse!  Blanking aborted.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2709
                    blurb());
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2710
+          set_locked_p(si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2711
           continue;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2712
         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2713
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2714
@@ -1049,7 +1073,17 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2715
             p->lock_p &&                /* and locking is enabled */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2716
             !si->locking_disabled_p &&  /* and locking is possible */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2717
             lock_timeout == 0)          /* and locking is not timer-deferred */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2718
+         {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2719
+          if (p->debug_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2720
+            fprintf(stderr, "going to lock screen B\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2721
           set_locked_p (si, True);      /* then lock right now. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2722
+          ok_to_unblank = pam_passwd_valid_p();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2723
+          if (ok_to_unblank == True)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2724
+           {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2725
+            set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2726
+            goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2727
+           }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2728
+         }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2729
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2730
         /* locked_p might be true already because of the above, or because of
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2731
            the LOCK ClientMessage.  But if not, and if we're supposed to lock
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2732
@@ -1064,10 +1098,7 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2733
       }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2734
 #endif /* !NO_LOCKING */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2735
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2736
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2737
-      ok_to_unblank = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2738
       do {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2739
-
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2740
         check_for_leaks ("blanked A");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2741
 	sleep_until_idle (si, False);		/* until not idle */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2742
         check_for_leaks ("blanked B");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2743
@@ -1077,6 +1108,12 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2744
 #ifndef NO_LOCKING
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2745
         /* Maybe unlock the screen.
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2746
          */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2747
+        if (si->demoing_p) goto DONE; /*in demoing mode and user wants out unblankscreen */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2748
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2749
+        /* This is when blank timeout has happened but lock timeout hasnt and user
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2750
+         * gets active. Simply get him out of the blank screen */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2751
+        if (si->screen_blanked_p && !si->locked_p) goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2752
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2753
 	if (si->locked_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2754
 	  {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2755
 	    saver_screen_info *ssi = si->default_screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2756
@@ -1087,7 +1124,21 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2757
 	    suspend_screenhack (si, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2758
 	    XUndefineCursor (si->dpy, ssi->screensaver_window);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2759
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2760
-	    ok_to_unblank = unlock_p (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2761
+            /*Prevents lock dialog posting on non blanked screen */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2762
+            if (!si->screen_blanked_p)  /*locked_p is true, so blank now*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2763
+              blank_screen (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2764
+            if (si->screen_blanked_p) /* if blanking successful, call PAM*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2765
+             {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2766
+              set_locked_p (si, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2767
+              ok_to_unblank = pam_passwd_valid_p();
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2768
+              if (ok_to_unblank == True)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2769
+               {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2770
+                set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2771
+                goto DONE;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2772
+               }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2773
+              }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2774
+             else /* blanking failed, probably couldnt grab keyboard/mouse */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2775
+               set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2776
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2777
 	    si->dbox_up_p = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2778
 	    XDefineCursor (si->dpy, ssi->screensaver_window, ssi->cursor);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2779
@@ -1111,6 +1162,7 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2780
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2781
 	} while (!ok_to_unblank);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2782
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2783
+DONE:
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2784
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2785
       if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2786
 	fprintf (stderr, "%s: unblanking screen at %s.\n",
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2787
@@ -1120,8 +1172,6 @@ main_loop (saver_info *si)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2788
       kill_screenhack (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2789
       unblank_screen (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2790
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2791
-      set_locked_p (si, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2792
-      si->emergency_lock_p = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2793
       si->demoing_p = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2794
       si->selection_mode = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2795
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2796
@@ -1208,6 +1258,11 @@ main (int argc, char **argv)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2797
   int i;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2798
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2799
   memset(si, 0, sizeof(*si));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2800
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2801
+/* Initialize and point si to pw_data i.e. the lock dialog struct */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2802
+  memset(ptr_mygtkpwd, 0, sizeof(*ptr_mygtkpwd));
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2803
+  si->pw_data = ptr_mygtkpwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2804
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2805
   global_si_kludge = si;	/* I hate C so much... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2806
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2807
 # undef ya_rand_init
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2808
@@ -1215,7 +1270,7 @@ main (int argc, char **argv)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2809
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2810
   save_argv (argc, argv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2811
   set_version_string (si, &argc, argv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2812
-  privileged_initialization (si, &argc, argv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2813
+/*oldplace  privileged_initialization (si, &argc, argv);*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2814
   hack_environment (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2815
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2816
   shell = connect_to_server (si, &argc, argv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2817
@@ -1223,6 +1278,8 @@ main (int argc, char **argv)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2818
   print_banner (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2819
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2820
   load_init_file (p);  /* must be before initialize_per_screen_info() */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2821
+  privileged_initialization (si, &argc, argv);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2822
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2823
   blurb_timestamp_p = p->timestamp_p;  /* kludge */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2824
   initialize_per_screen_info (si, shell); /* also sets si->fading_possible_p */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2825
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2826
@@ -1263,6 +1320,7 @@ main (int argc, char **argv)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2827
   handle_signals (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2828
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2829
   make_splash_dialog (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2830
+  /*spawn_external_passwd_process (si);*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2831
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2832
   main_loop (si);		/* doesn't return */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2833
   return 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2834
@@ -1413,13 +1471,18 @@ handle_clientmessage (saver_info *si, XE
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2835
   Atom type = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2836
   Window window = event->xclient.window;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2837
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2838
+  if (p->verbose_p) 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2839
+     fprintf(stderr, "handle_clientmessage\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2840
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2841
   /* Preferences might affect our handling of client messages. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2842
   maybe_reload_init_file (si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2843
+  XFlush (si->dpy);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2844
+  XSync (si->dpy, False);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2845
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2846
   if (event->xclient.message_type != XA_SCREENSAVER ||
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2847
       event->xclient.format != 32)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2848
     {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2849
-      bogus_clientmessage_warning (si, event);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2850
+      /*bogus_clientmessage_warning (si, event); mali */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2851
       return False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2852
     }
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2853
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2854
@@ -1667,10 +1730,17 @@ handle_clientmessage (saver_info *si, XE
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2855
 			    : "locking.");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2856
 	  sprintf (buf, "LOCK ClientMessage received; %s", response);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2857
 	  clientmessage_response (si, window, False, buf, response);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2858
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2859
+          if (p->verbose_p)
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2860
+             fprintf(stderr, "going to lock screen A\n");
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2861
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2862
 	  set_locked_p (si, True);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2863
+          si->emergency_lock_p = True;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2864
 	  si->selection_mode = 0;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2865
 	  si->demoing_p = False;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2866
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2867
+          return True; /* dont set lock_id to 0, causes to go in lock in main_loop above */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2868
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2869
 	  if (si->lock_id)	/* we're doing it now, so lose the timeout */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2870
 	    {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2871
 	      XtRemoveTimeOut (si->lock_id);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2872
diff -urp -x '*~' driver/xscreensaver.h driver/xscreensaver.h
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2873
--- driver/xscreensaver.h	2002-03-04 13:16:20.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2874
+++ driver/xscreensaver.h	2006-05-10 08:48:29.939723000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2875
@@ -115,6 +115,15 @@ struct saver_info {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2876
 				   privileged user. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2877
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2878
   Window passwd_dialog;		/* The password dialog, if its up. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2879
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2880
+  pid_t passwd_pid;             /* The pid of the password dialog if
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2881
+				   we ran an external process for
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2882
+				   it. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2883
+  Bool external_passwd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2884
+  Bool at_external_passwd;	/* AT-enabled, bugid 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2885
+				5059445(p3) screen kb and reader support
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2886
+				*/
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2887
+#endif /* HAVE_XSCREENSAVER_LOCK */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2888
   passwd_dialog_data *pw_data;	/* Other info necessary to draw it. */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2889
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2890
   int unlock_failures;		/* Counts failed login attempts while the
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2891
@@ -318,7 +327,7 @@ extern void get_screen_viewport (saver_s
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2892
 extern Bool unlock_p (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2893
 extern Bool lock_priv_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2894
 extern Bool lock_init (int argc, char **argv, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2895
-extern Bool passwd_valid_p (const char *typed_passwd, Bool verbose_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2896
+extern Bool passwd_valid_p (void);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2897
 #endif /* NO_LOCKING */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2898
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2899
 extern void set_locked_p (saver_info *si, Bool locked_p);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2900
@@ -326,6 +335,87 @@ extern int move_mouse_grab (saver_info *
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2901
                             int to_screen_no);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2902
 extern int mouse_screen (saver_info *si);
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2903
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2904
+/* =======================================================================
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2905
+   For lock.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2906
+   ======================================================================= */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2907
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2908
+enum window_type { w_dialog, w_message };
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2909
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2910
+struct passwd_dialog_data {
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2911
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2912
+  saver_screen_info *prompt_screen;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2913
+  int previous_mouse_x, previous_mouse_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2914
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2915
+  enum passwd_state state;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2916
+  char typed_passwd [80];
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2917
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2918
+  enum window_type  w_type;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2919
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2920
+  XtIntervalId timer;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2921
+  int i_beam;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2922
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2923
+  float ratio;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2924
+  Position x, y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2925
+  Dimension width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2926
+  Dimension height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2927
+  Dimension border_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2928
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2929
+  char *heading_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2930
+  char *body_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2931
+  /*
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2932
+   * For message dialog the body label may contain more than
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2933
+   * one line of text
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2934
+   */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2935
+  char **message_body_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2936
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2937
+  char *user_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2938
+  char *passwd_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2939
+  char *date_label;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2940
+  char *user_string;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2941
+  char *passwd_string;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2942
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2943
+  XFontStruct *heading_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2944
+  XFontStruct *body_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2945
+  XFontStruct *label_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2946
+  XFontStruct *passwd_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2947
+  XFontStruct *date_font;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2948
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2949
+  Pixel foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2950
+  Pixel background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2951
+  Pixel passwd_foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2952
+  Pixel passwd_background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2953
+  Pixel thermo_foreground;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2954
+  Pixel thermo_background;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2955
+  Pixel shadow_top;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2956
+  Pixel shadow_bottom;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2957
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2958
+  Dimension logo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2959
+  Dimension logo_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2960
+  Dimension thermo_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2961
+  Dimension internal_border;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2962
+  Dimension shadow_width;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2963
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2964
+  Dimension passwd_field_x, passwd_field_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2965
+  Dimension passwd_field_width, passwd_field_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2966
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2967
+  Dimension thermo_field_x, thermo_field_y;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2968
+  Dimension thermo_field_height;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2969
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2970
+  Pixmap logo_pixmap;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2971
+  int logo_npixels;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2972
+  unsigned long *logo_pixels;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2973
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2974
+  Pixmap save_under;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2975
+
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2976
+#ifdef HAVE_XSCREENSAVER_LOCK
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2977
+  /* extern passwd dialog stuff */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2978
+  XtInputId stdout_input_id;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2979
+  int       stdin_fd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2980
+  int       stdout_fd;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2981
+  Bool      got_windowid;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2982
+  FILE     *input_file;
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2983
+#endif
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2984
+};
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2985
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2986
 /* =======================================================================
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2987
    runtime privileges
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2988
diff -urp -x '*~' driver/xset.c driver/xset.c
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2989
--- driver/xset.c	2002-02-25 15:25:49.000000000 -0800
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2990
+++ driver/xset.c	2006-05-10 08:48:29.941372000 -0700
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2991
@@ -19,6 +19,7 @@
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2992
 #include <X11/Xutil.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2993
 #include <X11/Xatom.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2994
 #include <X11/Xos.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2995
+#include <X11/Intrinsic.h>
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2996
 
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2997
 /* This file doesn't need the Xt headers, so stub these types out... */
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2998
 #undef XtPointer
151bef9509d4 6424349 prepare xscreensaver sources for OpenSolaris release
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
  2999