summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/appl/xnlock
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/appl/xnlock')
-rw-r--r--crypto/heimdal/appl/xnlock/ChangeLog64
-rw-r--r--crypto/heimdal/appl/xnlock/Makefile.am30
-rw-r--r--crypto/heimdal/appl/xnlock/Makefile.in633
-rw-r--r--crypto/heimdal/appl/xnlock/README21
-rw-r--r--crypto/heimdal/appl/xnlock/nose.0.left38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.0.right38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.1.left38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.1.right38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.down38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.front38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.left.front38
-rw-r--r--crypto/heimdal/appl/xnlock/nose.right.front38
-rw-r--r--crypto/heimdal/appl/xnlock/xnlock.1123
-rw-r--r--crypto/heimdal/appl/xnlock/xnlock.c1117
-rw-r--r--crypto/heimdal/appl/xnlock/xnlock.cat1132
15 files changed, 2424 insertions, 0 deletions
diff --git a/crypto/heimdal/appl/xnlock/ChangeLog b/crypto/heimdal/appl/xnlock/ChangeLog
new file mode 100644
index 0000000..822b4f7
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/ChangeLog
@@ -0,0 +1,64 @@
+2001-03-15 Johan Danielsson <joda@pdc.kth.se>
+
+ * xnlock.c: don't explicitly set the krb4 ticket file
+
+2000-12-31 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c (main): handle krb5_init_context failure consistently
+
+2000-04-09 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c (verfiy_krb5): get the v4-realm from the v5-ticket and
+ not from the default one.
+ * xnlock.c (verify_krb5): add obtainting of v4 tickets.
+
+1999-11-17 Assar Westerlund <assar@sics.se>
+
+ * Makefile.am: only build when we have X11. From: Simon Josefsson
+ <jas@pdc.kth.se>
+
+Thu Mar 18 11:21:44 1999 Johan Danielsson <joda@hella.pdc.kth.se>
+
+ * Makefile.am: include Makefile.am.common
+
+Wed Mar 17 23:35:51 1999 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c (verify): use KRB_VERIFY_SECURE instead of 1
+
+Tue Mar 16 22:29:14 1999 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c: krb_verify_user_multiple -> krb_verify_user
+
+Thu Mar 11 14:59:20 1999 Johan Danielsson <joda@hella.pdc.kth.se>
+
+ * xnlock.c: add some if-braces to keep gcc happy
+
+Sun Nov 22 10:36:45 1998 Assar Westerlund <assar@sics.se>
+
+ * Makefile.in (WFLAGS): set
+
+Wed Jul 8 01:37:37 1998 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c (main): create place-holder ticket file with
+ open(O_EXCL | O_CREAT) instead of creat
+
+Sat Mar 28 12:53:46 1998 Assar Westerlund <assar@sics.se>
+
+ * Makefile.in (install, uninstall): transform the man page
+
+Tue Mar 24 05:20:34 1998 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c: remove redundant preprocessor stuff
+
+Sat Mar 21 14:36:21 1998 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c (init_words): recognize both `-p' and `-prog'
+
+Sat Feb 7 10:08:07 1998 Assar Westerlund <assar@sics.se>
+
+ * xnlock.c: Don't use REALM_SZ + 1, just REALM_SZ
+
+Sat Nov 29 04:58:19 1997 Johan Danielsson <joda@emma.pdc.kth.se>
+
+ * xnlock.c: Make it build w/o krb4.
+
diff --git a/crypto/heimdal/appl/xnlock/Makefile.am b/crypto/heimdal/appl/xnlock/Makefile.am
new file mode 100644
index 0000000..a8e6440
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/Makefile.am
@@ -0,0 +1,30 @@
+# $Id: Makefile.am,v 1.15 2000/11/15 22:51:12 assar Exp $
+
+include $(top_srcdir)/Makefile.am.common
+
+INCLUDES += $(INCLUDE_krb4) $(X_CFLAGS)
+
+WFLAGS += $(WFLAGS_NOIMPLICITINT)
+
+if HAVE_X
+
+bin_PROGRAMS = xnlock
+
+else
+
+bin_PROGRAMS =
+
+endif
+
+man_MANS = xnlock.1
+
+EXTRA_DIST = $(man_MANS) nose.0.left nose.0.right nose.1.left nose.1.right \
+ nose.down nose.front nose.left.front nose.right.front
+
+LDADD = \
+ $(LIB_kafs) \
+ $(LIB_krb5) \
+ $(LIB_krb4) \
+ $(LIB_des) \
+ $(LIB_roken) \
+ $(X_LIBS) -lXt $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS)
diff --git a/crypto/heimdal/appl/xnlock/Makefile.in b/crypto/heimdal/appl/xnlock/Makefile.in
new file mode 100644
index 0000000..a023f23
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/Makefile.in
@@ -0,0 +1,633 @@
+# Makefile.in generated automatically by automake 1.4b from Makefile.am
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_FLAG =
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+
+@SET_MAKE@
+host_alias = @host_alias@
+host_triplet = @host@
+AIX_EXTRA_KAFS = @AIX_EXTRA_KAFS@
+AMDEP = @AMDEP@
+AMTAR = @AMTAR@
+AS = @AS@
+AWK = @AWK@
+CANONICAL_HOST = @CANONICAL_HOST@
+CATMAN = @CATMAN@
+CATMANEXT = @CATMANEXT@
+CC = @CC@
+CPP = @CPP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+DBLIB = @DBLIB@
+DEPDIR = @DEPDIR@
+DIR_des = @DIR_des@
+DIR_roken = @DIR_roken@
+DLLTOOL = @DLLTOOL@
+EXEEXT = @EXEEXT@
+EXTRA_LIB45 = @EXTRA_LIB45@
+GROFF = @GROFF@
+INCLUDES_roken = @INCLUDES_roken@
+INCLUDE_ = @INCLUDE_@
+LEX = @LEX@
+LIBOBJS = @LIBOBJS@
+LIBTOOL = @LIBTOOL@
+LIB_ = @LIB_@
+LIB_AUTH_SUBDIRS = @LIB_AUTH_SUBDIRS@
+LIB_des = @LIB_des@
+LIB_des_appl = @LIB_des_appl@
+LIB_kdb = @LIB_kdb@
+LIB_otp = @LIB_otp@
+LIB_roken = @LIB_roken@
+LIB_security = @LIB_security@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+NEED_WRITEAUTH_FALSE = @NEED_WRITEAUTH_FALSE@
+NEED_WRITEAUTH_TRUE = @NEED_WRITEAUTH_TRUE@
+NROFF = @NROFF@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VOID_RETSIGTYPE = @VOID_RETSIGTYPE@
+WFLAGS_NOIMPLICITINT = @WFLAGS_NOIMPLICITINT@
+WFLAGS_NOUNUSED = @WFLAGS_NOUNUSED@
+YACC = @YACC@
+dpagaix_CFLAGS = @dpagaix_CFLAGS@
+dpagaix_LDADD = @dpagaix_LDADD@
+install_sh = @install_sh@
+
+# $Id: Makefile.am,v 1.15 2000/11/15 22:51:12 assar Exp $
+
+
+# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
+
+
+# $Id: Makefile.am.common,v 1.26 2001/05/21 13:27:48 joda Exp $
+
+
+AUTOMAKE_OPTIONS = foreign no-dependencies
+
+SUFFIXES = .et .h .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .x
+
+INCLUDES = -I$(top_builddir)/include $(INCLUDES_roken) $(INCLUDE_krb4) $(X_CFLAGS)
+
+AM_CFLAGS = $(WFLAGS)
+
+CP = cp
+
+COMPILE_ET = $(top_builddir)/lib/com_err/compile_et
+
+buildinclude = $(top_builddir)/include
+
+LIB_XauReadAuth = @LIB_XauReadAuth@
+LIB_crypt = @LIB_crypt@
+LIB_dbm_firstkey = @LIB_dbm_firstkey@
+LIB_dbopen = @LIB_dbopen@
+LIB_dlopen = @LIB_dlopen@
+LIB_dn_expand = @LIB_dn_expand@
+LIB_el_init = @LIB_el_init@
+LIB_getattr = @LIB_getattr@
+LIB_gethostbyname = @LIB_gethostbyname@
+LIB_getpwent_r = @LIB_getpwent_r@
+LIB_getpwnam_r = @LIB_getpwnam_r@
+LIB_getsockopt = @LIB_getsockopt@
+LIB_logout = @LIB_logout@
+LIB_logwtmp = @LIB_logwtmp@
+LIB_odm_initialize = @LIB_odm_initialize@
+LIB_pidfile = @LIB_pidfile@
+LIB_readline = @LIB_readline@
+LIB_res_search = @LIB_res_search@
+LIB_setpcred = @LIB_setpcred@
+LIB_setsockopt = @LIB_setsockopt@
+LIB_socket = @LIB_socket@
+LIB_syslog = @LIB_syslog@
+LIB_tgetent = @LIB_tgetent@
+
+LIBS = @LIBS@
+
+HESIODLIB = @HESIODLIB@
+HESIODINCLUDE = @HESIODINCLUDE@
+INCLUDE_hesiod = @INCLUDE_hesiod@
+LIB_hesiod = @LIB_hesiod@
+
+INCLUDE_krb4 = @INCLUDE_krb4@
+LIB_krb4 = @LIB_krb4@
+
+INCLUDE_openldap = @INCLUDE_openldap@
+LIB_openldap = @LIB_openldap@
+
+INCLUDE_readline = @INCLUDE_readline@
+
+LEXLIB = @LEXLIB@
+
+NROFF_MAN = groff -mandoc -Tascii
+
+@KRB4_TRUE@LIB_kafs = @KRB4_TRUE@$(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS)
+
+@KRB5_TRUE@LIB_krb5 = @KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
+@KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la
+@KRB5_TRUE@LIB_gssapi = @KRB5_TRUE@$(top_builddir)/lib/gssapi/libgssapi.la
+
+@DCE_TRUE@LIB_kdfs = @DCE_TRUE@$(top_builddir)/lib/kdfs/libkdfs.la
+
+CHECK_LOCAL = $(PROGRAMS)
+
+WFLAGS = @WFLAGS@ $(WFLAGS_NOIMPLICITINT)
+
+@HAVE_X_TRUE@bin_PROGRAMS = @HAVE_X_TRUE@xnlock
+@HAVE_X_FALSE@bin_PROGRAMS =
+
+man_MANS = xnlock.1
+
+EXTRA_DIST = $(man_MANS) nose.0.left nose.0.right nose.1.left nose.1.right \
+ nose.down nose.front nose.left.front nose.right.front
+
+
+LDADD = \
+ $(LIB_kafs) \
+ $(LIB_krb5) \
+ $(LIB_krb4) \
+ $(LIB_des) \
+ $(LIB_roken) \
+ $(X_LIBS) -lXt $(X_PRE_LIBS) -lX11 $(X_EXTRA_LIBS)
+
+subdir = appl/xnlock
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = ../../include/config.h
+CONFIG_CLEAN_FILES =
+@HAVE_X_FALSE@bin_PROGRAMS =
+PROGRAMS = $(bin_PROGRAMS)
+
+
+DEFS = @DEFS@ -I. -I$(srcdir) -I../../include
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+X_CFLAGS = @X_CFLAGS@
+X_LIBS = @X_LIBS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+xnlock_SOURCES = xnlock.c
+xnlock_OBJECTS = xnlock.$(OBJEXT)
+xnlock_LDADD = $(LDADD)
+@KRB4_FALSE@@KRB5_FALSE@xnlock_DEPENDENCIES =
+@KRB4_FALSE@@KRB5_TRUE@xnlock_DEPENDENCIES = \
+@KRB4_FALSE@@KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
+@KRB4_FALSE@@KRB5_TRUE@$(top_builddir)/lib/asn1/libasn1.la
+@KRB4_TRUE@@KRB5_FALSE@xnlock_DEPENDENCIES = \
+@KRB4_TRUE@@KRB5_FALSE@$(top_builddir)/lib/kafs/libkafs.la
+@KRB4_TRUE@@KRB5_TRUE@xnlock_DEPENDENCIES = \
+@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/kafs/libkafs.la \
+@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \
+@KRB4_TRUE@@KRB5_TRUE@$(top_builddir)/lib/asn1/libasn1.la
+xnlock_LDFLAGS =
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CFLAGS = @CFLAGS@
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = xnlock.c
+man1dir = $(mandir)/man1
+MANS = $(man_MANS)
+depcomp =
+DIST_COMMON = README ChangeLog Makefile.am Makefile.in
+
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+GZIP_ENV = --best
+SOURCES = xnlock.c
+OBJECTS = xnlock.$(OBJEXT)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .et .h .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .x .c .lo .o .obj
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/Makefile.am.common $(top_srcdir)/cf/Makefile.am.common
+ cd $(top_srcdir) && $(AUTOMAKE) --foreign appl/xnlock/Makefile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+
+mostlyclean-binPROGRAMS:
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+distclean-binPROGRAMS:
+
+maintainer-clean-binPROGRAMS:
+
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ if test -f $$p; then \
+ f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/$$f"; \
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/$$f; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \
+ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+ rm -f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+mostlyclean-compile:
+ -rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
+
+clean-compile:
+
+distclean-compile:
+ -rm -f *.tab.c
+
+maintainer-clean-compile:
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+xnlock$(EXEEXT): $(xnlock_OBJECTS) $(xnlock_DEPENDENCIES)
+ @rm -f xnlock$(EXEEXT)
+ $(LINK) $(xnlock_LDFLAGS) $(xnlock_OBJECTS) $(xnlock_LDADD) $(LIBS)
+.c.o:
+ $(COMPILE) -c $<
+.c.obj:
+ $(COMPILE) -c `cygpath -w $<`
+.c.lo:
+ $(LTCOMPILE) -c -o $@ $<
+
+install-man1:
+ $(mkinstalldirs) $(DESTDIR)$(man1dir)
+ @list='$(man1_MANS)'; \
+ l2='$(man_MANS)'; for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
+ done
+
+uninstall-man1:
+ @list='$(man1_MANS)'; \
+ l2='$(man_MANS)'; for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
+ rm -f $(DESTDIR)$(man1dir)/$$inst; \
+ done
+install-man: $(MANS)
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-man1
+uninstall-man:
+ @$(NORMAL_UNINSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+ || etags $(ETAGS_ARGS) $$tags $$unique $(LISP)
+
+GTAGS:
+ here=`CDPATH=: && cd $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $$here
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+ -rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+ cp -pR $$d/$$file $(distdir) \
+ || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-exec: install-exec-am
+
+install-data-am: install-man install-data-local
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+uninstall: uninstall-am
+all-am: Makefile $(PROGRAMS) $(MANS) all-local
+all-redirect: all-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+ -rm -f Makefile.in
+mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \
+ mostlyclean-libtool mostlyclean-tags \
+ mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am: clean-binPROGRAMS clean-compile clean-libtool clean-tags \
+ clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am: distclean-binPROGRAMS distclean-compile distclean-libtool \
+ distclean-tags distclean-generic clean-am
+ -rm -f libtool
+
+distclean: distclean-am
+
+maintainer-clean-am: maintainer-clean-binPROGRAMS \
+ maintainer-clean-compile maintainer-clean-libtool \
+ maintainer-clean-tags maintainer-clean-generic \
+ distclean-am
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-am
+
+.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
+maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
+mostlyclean-compile distclean-compile clean-compile \
+maintainer-clean-compile mostlyclean-libtool distclean-libtool \
+clean-libtool maintainer-clean-libtool install-man1 uninstall-man1 \
+install-man uninstall-man tags mostlyclean-tags distclean-tags \
+clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi \
+check-local check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-local install-data-am install-data install-am \
+install uninstall-am uninstall all-local all-redirect all-am all \
+install-strip installdirs mostlyclean-generic distclean-generic \
+clean-generic maintainer-clean-generic clean mostlyclean distclean \
+maintainer-clean
+
+
+install-suid-programs:
+ @foo='$(bin_SUIDS)'; \
+ for file in $$foo; do \
+ x=$(DESTDIR)$(bindir)/$$file; \
+ if chown 0:0 $$x && chmod u+s $$x; then :; else \
+ echo "*"; \
+ echo "* Failed to install $$x setuid root"; \
+ echo "*"; \
+ fi; done
+
+install-exec-hook: install-suid-programs
+
+install-build-headers:: $(include_HEADERS) $(build_HEADERZ)
+ @foo='$(include_HEADERS) $(build_HEADERZ)'; \
+ for f in $$foo; do \
+ f=`basename $$f`; \
+ if test -f "$(srcdir)/$$f"; then file="$(srcdir)/$$f"; \
+ else file="$$f"; fi; \
+ if cmp -s $$file $(buildinclude)/$$f 2> /dev/null ; then \
+ : ; else \
+ echo " $(CP) $$file $(buildinclude)/$$f"; \
+ $(CP) $$file $(buildinclude)/$$f; \
+ fi ; \
+ done
+
+all-local: install-build-headers
+#NROFF_MAN = nroff -man
+.1.cat1:
+ $(NROFF_MAN) $< > $@
+.3.cat3:
+ $(NROFF_MAN) $< > $@
+.5.cat5:
+ $(NROFF_MAN) $< > $@
+.8.cat8:
+ $(NROFF_MAN) $< > $@
+
+dist-cat1-mans:
+ @foo='$(man1_MANS)'; \
+ bar='$(man_MANS)'; \
+ for i in $$bar; do \
+ case $$i in \
+ *.1) foo="$$foo $$i";; \
+ esac; done ;\
+ for i in $$foo; do \
+ x=`echo $$i | sed 's/\.[^.]*$$/.cat1/'`; \
+ echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \
+ $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \
+ done
+
+dist-cat3-mans:
+ @foo='$(man3_MANS)'; \
+ bar='$(man_MANS)'; \
+ for i in $$bar; do \
+ case $$i in \
+ *.3) foo="$$foo $$i";; \
+ esac; done ;\
+ for i in $$foo; do \
+ x=`echo $$i | sed 's/\.[^.]*$$/.cat3/'`; \
+ echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \
+ $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \
+ done
+
+dist-cat5-mans:
+ @foo='$(man5_MANS)'; \
+ bar='$(man_MANS)'; \
+ for i in $$bar; do \
+ case $$i in \
+ *.5) foo="$$foo $$i";; \
+ esac; done ;\
+ for i in $$foo; do \
+ x=`echo $$i | sed 's/\.[^.]*$$/.cat5/'`; \
+ echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \
+ $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \
+ done
+
+dist-cat8-mans:
+ @foo='$(man8_MANS)'; \
+ bar='$(man_MANS)'; \
+ for i in $$bar; do \
+ case $$i in \
+ *.8) foo="$$foo $$i";; \
+ esac; done ;\
+ for i in $$foo; do \
+ x=`echo $$i | sed 's/\.[^.]*$$/.cat8/'`; \
+ echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \
+ $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \
+ done
+
+dist-hook: dist-cat1-mans dist-cat3-mans dist-cat5-mans dist-cat8-mans
+
+install-cat-mans:
+ $(SHELL) $(top_srcdir)/cf/install-catman.sh "$(INSTALL_DATA)" "$(mkinstalldirs)" "$(srcdir)" "$(DESTDIR)$(mandir)" '$(CATMANEXT)' $(man_MANS) $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS)
+
+install-data-local: install-cat-mans
+
+.et.h:
+ $(COMPILE_ET) $<
+.et.c:
+ $(COMPILE_ET) $<
+
+.x.c:
+ @cmp -s $< $@ 2> /dev/null || cp $< $@
+
+check-local::
+ @foo='$(CHECK_LOCAL)'; \
+ if test "$$foo"; then \
+ failed=0; all=0; \
+ for i in $$foo; do \
+ all=`expr $$all + 1`; \
+ if ./$$i --version > /dev/null 2>&1; then \
+ echo "PASS: $$i"; \
+ else \
+ echo "FAIL: $$i"; \
+ failed=`expr $$failed + 1`; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="$$failed of $$all tests failed"; \
+ fi; \
+ dashes=`echo "$$banner" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ fi
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/crypto/heimdal/appl/xnlock/README b/crypto/heimdal/appl/xnlock/README
new file mode 100644
index 0000000..5b16c52
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/README
@@ -0,0 +1,21 @@
+xnlock -- Dan Heller, 1990
+"nlock" is a "new lockscreen" type program... something that prevents
+screen burnout by making most of it "black" while providing something
+of interest to be displayed in case anyone is watching. The program
+also provides added security.
+
+"xnlock" is the X11 version of the program.
+
+Original sunview version written by Dan Heller 1985 (not included).
+
+For a real description of how this program works, read the
+man page or just try running it.
+
+The one major outstanding bug with this program is that every
+once in a while, two horizontal lines appear below the little
+figure that runs around the screen. If someone can find and
+fix this bug, *please* let me know -- I don't have time to
+look and if I waited till I had time, you'd never see this
+program... It has something to do with the "looking down"
+position and then directly moving up and right or left...
+
diff --git a/crypto/heimdal/appl/xnlock/nose.0.left b/crypto/heimdal/appl/xnlock/nose.0.left
new file mode 100644
index 0000000..cb3d152
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.0.left
@@ -0,0 +1,38 @@
+#define nose_0_left_width 64
+#define nose_0_left_height 64
+static unsigned char nose_0_left_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0x03,0x00,0x00,0x80,0x00,
+ 0x00,0x00,0x0e,0x0c,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x30,0x00,0x00,0x00,
+ 0x01,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0xc0,0x00,0x00,
+ 0x00,0x02,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x08,0x00,0x00,
+ 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,
+ 0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
+ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x01,0x00,0x00,
+ 0x18,0x00,0x20,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x40,0x00,0x80,0x00,0x00,
+ 0x00,0x08,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x0c,0x00,0x00,0x01,0x20,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x06,0x00,0x00,0xf8,0x07,
+ 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,
+ 0x00,0xff,0x00,0x04,0x10,0x00,0x00,0x00,0xc0,0x00,0x03,0x03,0x10,0x00,0x00,
+ 0x00,0x30,0x00,0x0c,0x01,0x20,0x00,0x00,0x00,0x08,0x00,0x98,0x00,0x20,0x00,
+ 0x00,0x00,0x0c,0x03,0x60,0x00,0x20,0x00,0x00,0x00,0xc2,0x00,0xc0,0x00,0x20,
+ 0x00,0x00,0x00,0x42,0x00,0x80,0x00,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x01,
+ 0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x21,0x00,0x00,
+ 0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+ 0x18,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x10,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.0.right b/crypto/heimdal/appl/xnlock/nose.0.right
new file mode 100644
index 0000000..f387baa
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.0.right
@@ -0,0 +1,38 @@
+#define nose_0_right_width 64
+#define nose_0_right_height 64
+static unsigned char nose_0_right_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
+ 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0xc0,0x0f,
+ 0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x70,0x00,0x00,0x80,0x00,0x00,0x00,0x0c,
+ 0xc0,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x00,
+ 0x03,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x20,0x00,0x00,
+ 0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,
+ 0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
+ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
+ 0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x18,0x00,0x00,0x80,0x00,
+ 0x00,0x08,0x00,0x10,0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
+ 0x01,0x00,0x02,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x20,0x00,0x00,
+ 0x00,0x04,0x80,0x00,0x00,0x60,0x00,0x00,0x00,0x18,0x60,0x00,0x00,0x40,0x00,
+ 0x00,0x00,0xe0,0x1f,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x08,0x20,0x00,0xff,0x00,0x00,0x00,0x00,0x08,0xc0,0xc0,0x00,0x03,0x00,
+ 0x00,0x00,0x04,0x80,0x30,0x00,0x0c,0x00,0x00,0x00,0x04,0x00,0x19,0x00,0x10,
+ 0x00,0x00,0x00,0x04,0x00,0x06,0xc0,0x30,0x00,0x00,0x00,0x04,0x00,0x03,0x00,
+ 0x43,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x42,0x00,0x00,0x00,0x04,0x80,0x00,
+ 0x00,0x84,0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x84,0x00,0x00,0x00,0x04,0x00,
+ 0x00,0x00,0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.1.left b/crypto/heimdal/appl/xnlock/nose.1.left
new file mode 100644
index 0000000..8a6b829
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.1.left
@@ -0,0 +1,38 @@
+#define nose_1_left_width 64
+#define nose_1_left_height 64
+static unsigned char nose_1_left_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0x03,0x00,0x00,0x80,0x00,
+ 0x00,0x00,0x0e,0x0c,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x30,0x00,0x00,0x00,
+ 0x01,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0xc0,0x00,0x00,
+ 0x00,0x02,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x08,0x00,0x00,
+ 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,
+ 0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
+ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x01,0x00,0x00,
+ 0x18,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x20,0x00,0x80,0x00,0x00,
+ 0x00,0x08,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x0c,0x00,0x80,0x00,0x20,0x00,
+ 0x00,0x00,0xe4,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x26,0x03,0x00,0xfc,0x07,
+ 0x00,0x00,0x00,0x12,0x0c,0x00,0x00,0xf8,0xff,0xff,0xff,0x11,0x10,0x80,0x1f,
+ 0x00,0x00,0x00,0x00,0x08,0x20,0x60,0x60,0xc0,0x07,0x00,0x00,0x04,0x40,0x10,
+ 0xc0,0x20,0x08,0x00,0x1f,0x02,0x40,0x08,0x00,0x21,0x10,0xc0,0x60,0x02,0x40,
+ 0x04,0x00,0x12,0x20,0x20,0x80,0x02,0x20,0xc2,0x00,0x14,0x40,0x18,0x00,0x03,
+ 0x20,0x22,0x00,0x0c,0x80,0x04,0x03,0x02,0x10,0x12,0x00,0x08,0x80,0x86,0x00,
+ 0x04,0x10,0x12,0x00,0x10,0x80,0x42,0x00,0x18,0x08,0x12,0x00,0x10,0x40,0x42,
+ 0x00,0x00,0x04,0x02,0x00,0x20,0x40,0x42,0x00,0x00,0x04,0x02,0x00,0x00,0x20,
+ 0x42,0x00,0x00,0x02,0x04,0x00,0x00,0x20,0x02,0x00,0x00,0x01,0x04,0x00,0x00,
+ 0x20,0x02,0x00,0x00,0x01,0x08,0x00,0x00,0x20,0x04,0x00,0x80,0x00,0x10,0x00,
+ 0x00,0x20,0x0c,0x00,0x80,0x00,0x60,0x00,0x00,0x10,0x08,0x00,0x40,0x00,0x80,
+ 0xff,0xff,0x0f,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.1.right b/crypto/heimdal/appl/xnlock/nose.1.right
new file mode 100644
index 0000000..f7c8962
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.1.right
@@ -0,0 +1,38 @@
+#define nose_1_right_width 64
+#define nose_1_right_height 64
+static unsigned char nose_1_right_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
+ 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x01,0x00,0x00,0xc0,0x0f,
+ 0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x70,0x00,0x00,0x80,0x00,0x00,0x00,0x0c,
+ 0xc0,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x00,
+ 0x03,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x20,0x00,0x00,
+ 0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,
+ 0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,
+ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
+ 0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,
+ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
+ 0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x00,0x80,0x00,
+ 0x00,0x08,0x00,0x10,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,
+ 0x01,0x00,0x04,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x27,0x00,0x00,
+ 0x00,0x04,0x00,0x01,0xc0,0x64,0x00,0x00,0x00,0x18,0xc0,0x00,0x30,0x48,0x00,
+ 0x00,0x00,0xe0,0x3f,0x00,0x08,0x88,0xff,0xff,0xff,0x1f,0x00,0x00,0x04,0x10,
+ 0x00,0x00,0x00,0x00,0xf8,0x01,0x02,0x20,0x00,0x00,0xe0,0x03,0x06,0x06,0x02,
+ 0x40,0xf8,0x00,0x10,0x04,0x03,0x08,0x02,0x40,0x06,0x03,0x08,0x84,0x00,0x10,
+ 0x04,0x40,0x01,0x04,0x04,0x48,0x00,0x20,0x04,0xc0,0x00,0x18,0x02,0x28,0x00,
+ 0x43,0x08,0x40,0xc0,0x20,0x01,0x30,0x00,0x44,0x08,0x20,0x00,0x61,0x01,0x10,
+ 0x00,0x48,0x10,0x18,0x00,0x42,0x01,0x08,0x00,0x48,0x20,0x00,0x00,0x42,0x02,
+ 0x08,0x00,0x48,0x20,0x00,0x00,0x42,0x02,0x04,0x00,0x40,0x40,0x00,0x00,0x42,
+ 0x04,0x00,0x00,0x40,0x80,0x00,0x00,0x40,0x04,0x00,0x00,0x20,0x80,0x00,0x00,
+ 0x40,0x04,0x00,0x00,0x20,0x00,0x01,0x00,0x20,0x04,0x00,0x00,0x10,0x00,0x01,
+ 0x00,0x30,0x04,0x00,0x00,0x08,0x00,0x02,0x00,0x10,0x08,0x00,0x00,0x06,0x00,
+ 0x0c,0x00,0x0c,0xf0,0xff,0xff,0x01,0x00,0xf0,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.down b/crypto/heimdal/appl/xnlock/nose.down
new file mode 100644
index 0000000..e8bdba4
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.down
@@ -0,0 +1,38 @@
+#define nose_down_width 64
+#define nose_down_height 64
+static unsigned char nose_down_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x1e,0x00,
+ 0x00,0x00,0x00,0x38,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
+ 0x03,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x40,0x00,0x00,0x00,
+ 0x00,0x08,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x10,0x00,0x80,
+ 0x1f,0x00,0x40,0x00,0x00,0x08,0x00,0x60,0x60,0x00,0x80,0x00,0x00,0x08,0x00,
+ 0x10,0x80,0x00,0x80,0x00,0x00,0x04,0x00,0x08,0x00,0x01,0x00,0x01,0x00,0x04,
+ 0x00,0x08,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x18,0x80,0x01,0x00,0x02,0x00,
+ 0x02,0x00,0x68,0x60,0x01,0x00,0x02,0x00,0x02,0x00,0x88,0x1f,0x01,0x00,0x02,
+ 0x00,0x02,0x00,0x08,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x10,0x80,0x00,0x00,
+ 0x03,0x00,0x06,0x00,0x60,0x60,0x00,0x80,0x02,0x00,0x0c,0x00,0x80,0x1f,0x00,
+ 0x40,0x01,0x00,0x14,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x28,0x00,0x00,0x00,
+ 0x00,0x90,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0xa0,0x01,0x00,
+ 0x00,0x00,0x26,0x00,0x00,0x40,0x1e,0x00,0x00,0xc0,0x11,0x00,0x00,0x80,0xe1,
+ 0x03,0x00,0x3c,0x0c,0x00,0x00,0x00,0x0e,0xfc,0xff,0x83,0x03,0x00,0x00,0x00,
+ 0xf0,0x01,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x80,0x03,0x00,0x0c,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x14,0x00,0x00,
+ 0x00,0x00,0x60,0x04,0x00,0x12,0x00,0x00,0xc0,0x7f,0x10,0x04,0x00,0x22,0xe0,
+ 0x01,0x70,0xc0,0x18,0x08,0x00,0x61,0x1c,0x06,0x10,0x00,0x0f,0x30,0xc0,0x80,
+ 0x07,0x08,0x08,0x00,0x06,0xc0,0x3f,0x80,0x01,0x08,0x08,0x00,0x18,0x00,0x02,
+ 0xc0,0x00,0x10,0x04,0x00,0x30,0x00,0x05,0x30,0x00,0x10,0x04,0x00,0x00,0x80,
+ 0x08,0x18,0x00,0x20,0x04,0x00,0x00,0x80,0x08,0x00,0x00,0x20,0x04,0x00,0x00,
+ 0x40,0x10,0x00,0x00,0x20,0x24,0x00,0x00,0x40,0x10,0x00,0x00,0x22,0x24,0x00,
+ 0x00,0x40,0x10,0x00,0x00,0x22,0x44,0x00,0x00,0x40,0x10,0x00,0x00,0x11,0x84,
+ 0x01,0x00,0xc0,0x18,0x00,0xc0,0x10,0x08,0x00,0x00,0x80,0x08,0x00,0x00,0x08,
+ 0x30,0x00,0x00,0x80,0x08,0x00,0x00,0x04,0xe0,0xff,0xff,0xff,0xf8,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.front b/crypto/heimdal/appl/xnlock/nose.front
new file mode 100644
index 0000000..64b8201
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.front
@@ -0,0 +1,38 @@
+#define nose_front_width 64
+#define nose_front_height 64
+static unsigned char nose_front_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x08,0x00,0xc0,0x1f,0x00,0x20,0x00,0x00,0x08,0x00,0x30,0x60,0x00,0x20,0x00,
+ 0x00,0xf8,0xff,0x0f,0x80,0xff,0x3f,0x00,0x00,0x00,0x02,0x02,0x00,0x82,0x00,
+ 0x00,0x00,0x00,0x03,0x01,0x00,0x84,0x01,0x00,0x00,0x00,0x81,0x00,0x00,0x08,
+ 0x01,0x00,0x00,0x80,0x80,0x00,0x00,0x08,0x02,0x00,0x00,0x80,0x40,0x00,0x00,
+ 0x10,0x02,0x00,0x00,0x40,0x40,0x00,0x00,0x10,0x04,0x00,0x00,0x40,0x20,0x00,
+ 0x00,0x20,0x04,0x00,0x00,0x60,0x20,0x00,0x00,0x20,0x0c,0x00,0x00,0x20,0x20,
+ 0x00,0x00,0x20,0x08,0x00,0x00,0x20,0x20,0x00,0x00,0x20,0x08,0x00,0x00,0x10,
+ 0x20,0x00,0x00,0x20,0x10,0x00,0x00,0x10,0x20,0x00,0x00,0x20,0x10,0x00,0x00,
+ 0x10,0x20,0x00,0x00,0x20,0x10,0x00,0x00,0x10,0x40,0x00,0x00,0x10,0x10,0x00,
+ 0x00,0x10,0x40,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x80,0x00,0x00,0x08,0x10,
+ 0x00,0x00,0x10,0x80,0x00,0x00,0x08,0x10,0x00,0x00,0x30,0x00,0x01,0x00,0x04,
+ 0x18,0x00,0x00,0x20,0x00,0x02,0x00,0x02,0x08,0x00,0x00,0x20,0x00,0x0c,0x80,
+ 0x01,0x08,0x00,0x00,0x60,0x00,0x30,0x60,0x00,0x0c,0x00,0x00,0x40,0x00,0xc0,
+ 0x1f,0x00,0x04,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0xc0,0x0f,0x00,0x00,0x00,
+ 0x00,0x40,0x10,0x20,0x10,0x00,0x00,0x00,0x00,0x20,0x60,0x30,0x20,0x00,0x00,
+ 0x00,0x00,0x20,0xc0,0x18,0x20,0x00,0x00,0xc0,0x7f,0x10,0x80,0x0d,0x40,0xe0,
+ 0x01,0x70,0xc0,0x18,0x00,0x05,0x40,0x1c,0x06,0x10,0x00,0x0f,0x00,0x05,0x80,
+ 0x07,0x08,0x08,0x00,0x06,0x00,0x05,0x80,0x01,0x08,0x08,0x00,0x18,0x00,0x05,
+ 0xc0,0x00,0x10,0x04,0x00,0x30,0x00,0x05,0x30,0x00,0x10,0x04,0x00,0x00,0x80,
+ 0x08,0x18,0x00,0x20,0x04,0x00,0x00,0x80,0x08,0x00,0x00,0x20,0x04,0x00,0x00,
+ 0x40,0x10,0x00,0x00,0x20,0x24,0x00,0x00,0x40,0x10,0x00,0x00,0x22,0x24,0x00,
+ 0x00,0x40,0x10,0x00,0x00,0x22,0x44,0x00,0x00,0x40,0x10,0x00,0x00,0x11,0x84,
+ 0x01,0x00,0xc0,0x18,0x00,0xc0,0x10,0x08,0x00,0x00,0x80,0x08,0x00,0x00,0x08,
+ 0x30,0x00,0x00,0x80,0x08,0x00,0x00,0x04,0xe0,0xff,0xff,0xff,0xf8,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.left.front b/crypto/heimdal/appl/xnlock/nose.left.front
new file mode 100644
index 0000000..3a871ea
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.left.front
@@ -0,0 +1,38 @@
+#define nose_left_front_width 64
+#define nose_left_front_height 64
+static unsigned char nose_left_front_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x40,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x40,0x00,0x00,0x04,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x08,0x00,0xe0,0x0f,0x00,0x20,0x00,0x00,0x08,0x00,0x18,0x30,0x00,0x20,0x00,
+ 0x00,0xf8,0xff,0x07,0xc0,0xff,0x3f,0x00,0x00,0x00,0x02,0x01,0x00,0x81,0x00,
+ 0x00,0x00,0x00,0x83,0x00,0x00,0x82,0x01,0x00,0x00,0x00,0x41,0x00,0x00,0x04,
+ 0x01,0x00,0x00,0x80,0x40,0x00,0x00,0x04,0x02,0x00,0x00,0x80,0x20,0x00,0x00,
+ 0x08,0x02,0x00,0x00,0x40,0x20,0x00,0x00,0x08,0x04,0x00,0x00,0x40,0x10,0x00,
+ 0x00,0x10,0x04,0x00,0x00,0x60,0x10,0x00,0x00,0x10,0x0c,0x00,0x00,0x20,0x10,
+ 0x00,0x00,0x10,0x08,0x00,0x00,0x30,0x10,0x00,0x00,0x10,0x08,0x00,0x00,0x10,
+ 0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,
+ 0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x00,0x10,0x20,0x00,0x00,0x08,0x10,0x00,
+ 0x00,0x10,0x20,0x00,0x00,0x08,0x10,0x00,0x00,0x10,0x40,0x00,0x00,0x04,0x10,
+ 0x00,0x00,0x30,0x40,0x00,0x00,0x04,0x10,0x00,0x00,0x20,0x80,0x00,0x00,0x02,
+ 0x18,0x00,0x00,0x20,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x60,0x00,0x06,0xc0,
+ 0x00,0x08,0x00,0x00,0x80,0x00,0x18,0x30,0x00,0x0c,0x00,0x00,0x80,0x00,0xe0,
+ 0x0f,0x00,0x04,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,0x00,
+ 0x00,0xff,0x00,0x04,0x10,0x00,0x00,0x00,0xe0,0x00,0x07,0x02,0x10,0x00,0x00,
+ 0x00,0x30,0x00,0x8c,0x01,0x20,0x00,0x00,0x00,0x0c,0x00,0x90,0x00,0x20,0x00,
+ 0x00,0x00,0x04,0x03,0x60,0x00,0x20,0x00,0x00,0x00,0xc2,0x00,0xc0,0x00,0x20,
+ 0x00,0x00,0x00,0x42,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x02,
+ 0x20,0x00,0x00,0x00,0x21,0x00,0x00,0x06,0x20,0x00,0x00,0x00,0x21,0x00,0x00,
+ 0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x03,0x00,
+ 0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+ 0x18,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x10,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/nose.right.front b/crypto/heimdal/appl/xnlock/nose.right.front
new file mode 100644
index 0000000..f821417
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/nose.right.front
@@ -0,0 +1,38 @@
+#define nose_right_front_width 64
+#define nose_right_front_height 64
+static unsigned char nose_right_front_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x20,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
+ 0x20,0x00,0x00,0x02,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x04,0x00,0xf0,0x07,0x00,0x10,0x00,0x00,0x04,0x00,0x0c,0x18,0x00,0x10,0x00,
+ 0x00,0xfc,0xff,0x03,0xe0,0xff,0x1f,0x00,0x00,0x00,0x81,0x00,0x80,0x40,0x00,
+ 0x00,0x00,0x80,0x41,0x00,0x00,0xc1,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x82,
+ 0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x02,0x01,0x00,0x00,0x40,0x10,0x00,0x00,
+ 0x04,0x01,0x00,0x00,0x20,0x10,0x00,0x00,0x04,0x02,0x00,0x00,0x20,0x08,0x00,
+ 0x00,0x08,0x02,0x00,0x00,0x30,0x08,0x00,0x00,0x08,0x06,0x00,0x00,0x10,0x08,
+ 0x00,0x00,0x08,0x04,0x00,0x00,0x10,0x08,0x00,0x00,0x08,0x0c,0x00,0x00,0x08,
+ 0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,
+ 0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x10,0x00,0x00,0x04,0x08,0x00,
+ 0x00,0x08,0x10,0x00,0x00,0x04,0x08,0x00,0x00,0x08,0x20,0x00,0x00,0x02,0x08,
+ 0x00,0x00,0x08,0x20,0x00,0x00,0x02,0x0c,0x00,0x00,0x18,0x40,0x00,0x00,0x01,
+ 0x04,0x00,0x00,0x10,0x80,0x00,0x80,0x00,0x04,0x00,0x00,0x10,0x00,0x03,0x60,
+ 0x00,0x06,0x00,0x00,0x30,0x00,0x0c,0x18,0x00,0x01,0x00,0x00,0x20,0x00,0xf0,
+ 0x07,0x00,0x01,0x00,0x00,0x60,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x40,0x00,
+ 0x00,0x00,0x80,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x08,0x20,0x00,0xff,0x00,0x00,0x00,0x00,0x08,0x40,0xe0,0x00,0x07,0x00,
+ 0x00,0x00,0x04,0x80,0x31,0x00,0x0c,0x00,0x00,0x00,0x04,0x00,0x09,0x00,0x30,
+ 0x00,0x00,0x00,0x04,0x00,0x06,0xc0,0x20,0x00,0x00,0x00,0x04,0x00,0x03,0x00,
+ 0x43,0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x42,0x00,0x00,0x00,0x04,0x40,0x00,
+ 0x00,0x84,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x84,0x00,0x00,0x00,0x04,0x00,
+ 0x00,0x00,0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00};
diff --git a/crypto/heimdal/appl/xnlock/xnlock.1 b/crypto/heimdal/appl/xnlock/xnlock.1
new file mode 100644
index 0000000..c62417d
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/xnlock.1
@@ -0,0 +1,123 @@
+.\" xnlock -- Dan Heller 1985 <argv@sun.com>
+.TH XNLOCK 1L "19 April 1990"
+.SH NAME
+xnlock \- amusing lock screen program with message for passers-by
+.SH SYNOPSIS
+.B xnlock
+[
+\fIoptions\fP
+]
+[
+\fImessage\fP
+]
+.SH DESCRIPTION
+.I xnlock
+is a program that acts as a screen saver for workstations running X11.
+It also "locks" the screen such that the workstation can be left
+unattended without worry that someone else will walk up to it and
+mess everything up. When \fIxnlock\fP is running, a little man with
+a big nose and a hat runs around spewing out messages to the screen.
+By default, the messages are "humorous", but that depends on your
+sense of humor.
+.LP
+If a key or mouse button is pressed, a prompt is printed requesting the
+user's password. If a RETURN is not typed within 30 seconds,
+the little man resumes running around.
+.LP
+Text on the command line is used as the message. For example:
+.br
+ % xnlock I\'m out to lunch for a couple of hours.
+.br
+Note the need to quote shell metacharacters.
+.LP
+In the absence of flags or text, \fIxnlock\fP displays random fortunes.
+.SH OPTIONS
+Command line options override all resource specifications.
+All arguments that are not associated with a command line option
+is taken to be message text that the little man will "say" every
+once in a while. The resource \fBxnlock.text\fP may be set to
+a string.
+.TP
+.BI \-fn " fontname"
+The default font is the first 18 point font in the \fInew century schoolbook\fP
+family. While larger fonts are recokmmended over smaller ones, any font
+in the server's font list will work. The resource to use for this option
+is \fBxnlock.font\fP.
+.TP
+.BI \-filename " filename"
+Take the message to be displayed from the file \fIfilename\fP.
+If \fIfilename\fP is not specified, \fI$HOME/.msgfile\fP is used.
+If the contents of the file are changed during runtime, the most recent text
+of the file is used (allowing the displayed message to be altered remotely).
+Carriage returns within the text are allowed, but tabs or other control
+characters are not translated and should not be used.
+The resource available for this option is \fBxnlock.file\fP.
+.TP
+.BI \-ar
+Accept root's password to unlock screen. This option is true by
+default. The reason for this is so that someone's screen may be
+unlocked by autorized users in case of emergency and the person
+running the program is still out to lunch. The resource available
+for specifying this option is \fBxnlock.acceptRootPasswd\fP.
+.TP
+.BI \-noar
+Don't accept root's password. This option is for paranoids who
+fear their peers might breakin using root's password and remove
+their files anyway. Specifying this option on the command line
+overrides the \fBxnlock.acceptRootPasswd\fP if set to True.
+.TP
+.BI \-ip
+Ignore password prompt.
+The resource available for this option is \fBxnlock.ignorePasswd\fP.
+.TP
+.BI \-noip
+Don't ignore password prompt. This is available in order to
+override the resource \fBignorePasswd\fP if set to True.
+.TP
+.BI -fg " color"
+Specifies the foreground color. The resource available for this
+is \fBxnlock.foreground\fP.
+.TP
+.BI -bg " color"
+Specifies the background color. The resource available for this
+is \fBxnlock.background\fP.
+.TP
+.BI \-rv
+Reverse the foreground and background colors.
+The resource for this is \fBxvnlock.reverseVideo\fP.
+.TP
+.BI \-norv
+Don't use reverse video. This is available to override the reverseVideo
+resource if set to True.
+.TP
+.BI \-prog " program"
+Receive message text from the running program \fIprogram\fP. If there
+are arguments to \fIprogram\fP, encase them with the name of the program in
+quotes (e.g. xnlock -t "fortune -o").
+The resource for this is \fBxnlock.program\fP.
+.SH RESOURCES
+.br
+xnlock.font: fontname
+.br
+xnlock.foreground: color
+.br
+xnlock.background: color
+.br
+xnlock.reverseVideo: True/False
+.br
+xnlock.text: Some random text string
+.br
+xnlock.program: program [args]
+.br
+xnlock.ignorePasswd: True/False
+.br
+xnlock.acceptRootPasswd: True/False
+.SH FILES
+\fIxnlock\fP executable file
+.br
+~/.msgfile default message file
+.SH AUTHOR
+Dan Heller <argv@sun.com> Copyright (c) 1985, 1990.
+.br
+The original version of this program was written using pixrects on
+a Sun 2 running SunOS 1.1.
diff --git a/crypto/heimdal/appl/xnlock/xnlock.c b/crypto/heimdal/appl/xnlock/xnlock.c
new file mode 100644
index 0000000..da61baf
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/xnlock.c
@@ -0,0 +1,1117 @@
+/*
+ * xnlock -- Dan Heller, 1990
+ * "nlock" is a "new lockscreen" type program... something that prevents
+ * screen burnout by making most of it "black" while providing something
+ * of interest to be displayed in case anyone is watching.
+ * "xnlock" is the X11 version of the program.
+ * Original sunview version written by Dan Heller 1985 (not included here).
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+RCSID("$Id: xnlock.c,v 1.85 2001/03/15 17:13:13 joda Exp $");
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <X11/StringDefs.h>
+#include <X11/Intrinsic.h>
+#include <X11/keysym.h>
+#include <X11/Shell.h>
+#include <X11/Xos.h>
+#ifdef strerror
+#undef strerror
+#endif
+#include <ctype.h>
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+
+#ifdef KRB5
+#include <krb5.h>
+#endif
+#ifdef KRB4
+#include <krb.h>
+#include <kafs.h>
+#endif
+
+#include <roken.h>
+#include <err.h>
+
+static char login[16];
+static char userprompt[128];
+#ifdef KRB4
+static char name[ANAME_SZ];
+static char inst[INST_SZ];
+static char realm[REALM_SZ];
+#endif
+#ifdef KRB5
+static krb5_context context;
+static krb5_principal client;
+#endif
+
+#define font_height(font) (font->ascent + font->descent)
+
+static char *SPACE_STRING = " ";
+static char STRING[] = "****************";
+
+#define STRING_LENGTH (sizeof(STRING))
+#define MAX_PASSWD_LENGTH 256
+/* (sizeof(STRING)) */
+
+#define PROMPT "Password: "
+#define FAIL_MSG "Sorry, try again"
+#define LEFT 001
+#define RIGHT 002
+#define DOWN 004
+#define UP 010
+#define FRONT 020
+#define X_INCR 3
+#define Y_INCR 2
+#define XNLOCK_CTRL 1
+#define XNLOCK_NOCTRL 0
+
+static XtAppContext app;
+static Display *dpy;
+static unsigned short Width, Height;
+static Widget widget;
+static GC gc;
+static XtIntervalId timeout_id;
+static char *words;
+static int x, y;
+static Pixel Black, White;
+static XFontStruct *font;
+static char root_cpass[128];
+static char user_cpass[128];
+static int time_left, prompt_x, prompt_y, time_x, time_y;
+static unsigned long interval;
+static Pixmap left0, left1, right0, right1, left_front,
+ right_front, front, down;
+
+#define MAXLINES 40
+
+#define IS_MOVING 1
+#define GET_PASSWD 2
+static int state; /* indicates states: walking or getting passwd */
+
+static int ALLOW_LOGOUT = (60*10); /* Allow logout after nn seconds */
+#define LOGOUT_PASSWD "enuHDmTo5Lq4g" /* when given password "LOGOUT" */
+static time_t locked_at;
+
+struct appres_t {
+ Pixel bg;
+ Pixel fg;
+ XFontStruct *font;
+ Boolean ignore_passwd;
+ Boolean do_reverse;
+ Boolean accept_root;
+ char *text, *text_prog, *file, *logoutPasswd;
+ Boolean no_screensaver;
+ Boolean destroytickets;
+} appres;
+
+static XtResource resources[] = {
+ { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
+ XtOffsetOf(struct appres_t, bg), XtRString, "black" },
+
+ { XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
+ XtOffsetOf(struct appres_t, fg), XtRString, "white" },
+
+ { XtNfont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
+ XtOffsetOf(struct appres_t, font),
+ XtRString, "-*-new century schoolbook-*-*-*-18-*" },
+
+ { "ignorePasswd", "IgnorePasswd", XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(struct appres_t,ignore_passwd),XtRImmediate,(XtPointer)False },
+
+ { "acceptRootPasswd", "AcceptRootPasswd", XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(struct appres_t, accept_root), XtRImmediate, (XtPointer)True },
+
+ { "text", "Text", XtRString, sizeof(String),
+ XtOffsetOf(struct appres_t, text), XtRString, "I'm out running around." },
+
+ { "program", "Program", XtRString, sizeof(String),
+ XtOffsetOf(struct appres_t, text_prog), XtRImmediate, NULL },
+
+ { "file", "File", XtRString, sizeof(String),
+ XtOffsetOf(struct appres_t,file), XtRImmediate, NULL },
+
+ { "logoutPasswd", "logoutPasswd", XtRString, sizeof(String),
+ XtOffsetOf(struct appres_t, logoutPasswd), XtRString, LOGOUT_PASSWD },
+
+ { "noScreenSaver", "NoScreenSaver", XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(struct appres_t,no_screensaver), XtRImmediate, (XtPointer)True },
+
+ { "destroyTickets", "DestroyTickets", XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(struct appres_t,destroytickets), XtRImmediate, (XtPointer)True },
+};
+
+static XrmOptionDescRec options[] = {
+ { "-fg", ".foreground", XrmoptionSepArg, NULL },
+ { "-foreground", ".foreground", XrmoptionSepArg, NULL },
+ { "-fn", ".font", XrmoptionSepArg, NULL },
+ { "-font", ".font", XrmoptionSepArg, NULL },
+ { "-ip", ".ignorePasswd", XrmoptionNoArg, "True" },
+ { "-noip", ".ignorePasswd", XrmoptionNoArg, "False" },
+ { "-ar", ".acceptRootPasswd", XrmoptionNoArg, "True" },
+ { "-noar", ".acceptRootPasswd", XrmoptionNoArg, "False" },
+ { "-nonoscreensaver", ".noScreenSaver", XrmoptionNoArg, "False" },
+ { "-nodestroytickets", ".destroyTickets", XrmoptionNoArg, "False" },
+};
+
+static char*
+get_words(void)
+{
+ FILE *pp = NULL;
+ static char buf[512];
+ long n;
+
+ if (appres.text_prog) {
+ pp = popen(appres.text_prog, "r");
+ if (!pp) {
+ warn("popen %s", appres.text_prog);
+ return appres.text;
+ }
+ n = fread(buf, 1, sizeof(buf) - 1, pp);
+ buf[n] = 0;
+ pclose(pp);
+ return buf;
+ }
+ if (appres.file) {
+ pp = fopen(appres.file, "r");
+ if (!pp) {
+ warn("fopen %s", appres.file);
+ return appres.text;
+ }
+ n = fread(buf, 1, sizeof(buf) - 1, pp);
+ buf[n] = 0;
+ fclose(pp);
+ return buf;
+ }
+
+ return appres.text;
+}
+
+static void
+usage(void)
+{
+ fprintf(stderr, "usage: %s [options] [message]\n", getprogname());
+ fprintf(stderr, "-fg color foreground color\n");
+ fprintf(stderr, "-bg color background color\n");
+ fprintf(stderr, "-rv reverse foreground/background colors\n");
+ fprintf(stderr, "-nrv no reverse video\n");
+ fprintf(stderr, "-ip ignore passwd\n");
+ fprintf(stderr, "-nip don't ignore passwd\n");
+ fprintf(stderr, "-ar accept root's passwd to unlock\n");
+ fprintf(stderr, "-nar don't accept root's passwd\n");
+ fprintf(stderr, "-f [file] message is read from file or ~/.msgfile\n");
+ fprintf(stderr, "-prog program text is gotten from executing `program'\n");
+ fprintf(stderr, "-nodestroytickets keep kerberos tickets\n");
+ exit(1);
+}
+
+static void
+init_words (int argc, char **argv)
+{
+ int i = 0;
+
+ while(argv[i]) {
+ if(strcmp(argv[i], "-p") == 0
+ || strcmp(argv[i], "-prog") == 0) {
+ i++;
+ if(argv[i]) {
+ appres.text_prog = argv[i];
+ i++;
+ } else {
+ warnx ("-p requires an argument");
+ usage();
+ }
+ } else if(strcmp(argv[i], "-f") == 0) {
+ i++;
+ if(argv[i]) {
+ appres.file = argv[i];
+ i++;
+ } else {
+ asprintf (&appres.file,
+ "%s/.msgfile", getenv("HOME"));
+ if (appres.file == NULL)
+ errx (1, "cannot allocate memory for message");
+ }
+ } else {
+ int j;
+ int len = 1;
+ for(j = i; argv[j]; j++)
+ len += strlen(argv[j]) + 1;
+ appres.text = malloc(len);
+ if (appres.text == NULL)
+ errx (1, "cannot allocate memory for message");
+ appres.text[0] = 0;
+ for(; i < j; i++){
+ strlcat(appres.text, argv[i], len);
+ strlcat(appres.text, " ", len);
+ }
+ }
+ }
+}
+
+static void
+ScreenSaver(int save)
+{
+ static int timeout, interval, prefer_blank, allow_exp;
+ if(!appres.no_screensaver){
+ if (save) {
+ XGetScreenSaver(dpy, &timeout, &interval,
+ &prefer_blank, &allow_exp);
+ XSetScreenSaver(dpy, 0, interval, prefer_blank, allow_exp);
+ } else
+ /* restore state */
+ XSetScreenSaver(dpy, timeout, interval, prefer_blank, allow_exp);
+ }
+}
+
+/* Forward decls necessary */
+static void talk(int force_erase);
+static unsigned long look(void);
+
+static int
+zrefresh(void)
+{
+ switch (fork()) {
+ case -1:
+ warn ("zrefresh: fork");
+ return -1;
+ case 0:
+ /* Child */
+ execlp("zrefresh", "zrefresh", 0);
+ execl(BINDIR "/zrefresh", "zrefresh", 0);
+ return -1;
+ default:
+ /* Parent */
+ break;
+ }
+ return 0;
+}
+
+static void
+leave(void)
+{
+ XUngrabPointer(dpy, CurrentTime);
+ XUngrabKeyboard(dpy, CurrentTime);
+ ScreenSaver(0);
+ XCloseDisplay(dpy);
+ zrefresh();
+ exit(0);
+}
+
+static void
+walk(int dir)
+{
+ int incr = 0;
+ static int lastdir;
+ static int up = 1;
+ static Pixmap frame;
+
+ XSetForeground(dpy, gc, White);
+ XSetBackground(dpy, gc, Black);
+ if (dir & (LEFT|RIGHT)) { /* left/right movement (mabye up/down too) */
+ up = -up; /* bouncing effect (even if hit a wall) */
+ if (dir & LEFT) {
+ incr = X_INCR;
+ frame = (up < 0) ? left0 : left1;
+ } else {
+ incr = -X_INCR;
+ frame = (up < 0) ? right0 : right1;
+ }
+ if ((lastdir == FRONT || lastdir == DOWN) && dir & UP) {
+ /* workaround silly bug that leaves screen dust when
+ * guy is facing forward or down and moves up-left/right.
+ */
+ XCopyPlane(dpy, frame, XtWindow(widget), gc, 0, 0, 64,64, x, y, 1L);
+ XFlush(dpy);
+ }
+ /* note that maybe neither UP nor DOWN is set! */
+ if (dir & UP && y > Y_INCR)
+ y -= Y_INCR;
+ else if (dir & DOWN && y < (int)Height - 64)
+ y += Y_INCR;
+ }
+ /* Explicit up/down movement only (no left/right) */
+ else if (dir == UP)
+ XCopyPlane(dpy, front, XtWindow(widget), gc,
+ 0,0, 64,64, x, y -= Y_INCR, 1L);
+ else if (dir == DOWN)
+ XCopyPlane(dpy, down, XtWindow(widget), gc,
+ 0,0, 64,64, x, y += Y_INCR, 1L);
+ else if (dir == FRONT && frame != front) {
+ if (up > 0)
+ up = -up;
+ if (lastdir & LEFT)
+ frame = left_front;
+ else if (lastdir & RIGHT)
+ frame = right_front;
+ else
+ frame = front;
+ XCopyPlane(dpy, frame, XtWindow(widget), gc, 0, 0, 64,64, x, y, 1L);
+ }
+ if (dir & LEFT)
+ while(--incr >= 0) {
+ XCopyPlane(dpy, frame, XtWindow(widget), gc,
+ 0,0, 64,64, --x, y+up, 1L);
+ XFlush(dpy);
+ }
+ else if (dir & RIGHT)
+ while(++incr <= 0) {
+ XCopyPlane(dpy, frame, XtWindow(widget), gc,
+ 0,0, 64,64, ++x, y+up, 1L);
+ XFlush(dpy);
+ }
+ lastdir = dir;
+}
+
+static int
+think(void)
+{
+ if (rand() & 1)
+ walk(FRONT);
+ if (rand() & 1) {
+ words = get_words();
+ return 1;
+ }
+ return 0;
+}
+
+static void
+move(XtPointer _p, XtIntervalId *_id)
+{
+ static int length, dir;
+
+ if (!length) {
+ int tries = 0;
+ dir = 0;
+ if ((rand() & 1) && think()) {
+ talk(0); /* sets timeout to itself */
+ return;
+ }
+ if (!(rand() % 3) && (interval = look())) {
+ timeout_id = XtAppAddTimeOut(app, interval, move, NULL);
+ return;
+ }
+ interval = 20 + rand() % 100;
+ do {
+ if (!tries)
+ length = Width/100 + rand() % 90, tries = 8;
+ else
+ tries--;
+ switch (rand() % 8) {
+ case 0:
+ if (x - X_INCR*length >= 5)
+ dir = LEFT;
+ case 1:
+ if (x + X_INCR*length <= (int)Width - 70)
+ dir = RIGHT;
+ case 2:
+ if (y - (Y_INCR*length) >= 5)
+ dir = UP, interval = 40;
+ case 3:
+ if (y + Y_INCR*length <= (int)Height - 70)
+ dir = DOWN, interval = 20;
+ case 4:
+ if (x - X_INCR*length >= 5 && y - (Y_INCR*length) >= 5)
+ dir = (LEFT|UP);
+ case 5:
+ if (x + X_INCR * length <= (int)Width - 70 &&
+ y-Y_INCR * length >= 5)
+ dir = (RIGHT|UP);
+ case 6:
+ if (x - X_INCR * length >= 5 &&
+ y + Y_INCR * length <= (int)Height - 70)
+ dir = (LEFT|DOWN);
+ case 7:
+ if (x + X_INCR*length <= (int)Width - 70 &&
+ y + Y_INCR*length <= (int)Height - 70)
+ dir = (RIGHT|DOWN);
+ }
+ } while (!dir);
+ }
+ walk(dir);
+ --length;
+ timeout_id = XtAppAddTimeOut(app, interval, move, NULL);
+}
+
+static void
+post_prompt_box(Window window)
+{
+ int width = (Width / 3);
+ int height = font_height(font) * 6;
+ int box_x, box_y;
+
+ /* make sure the entire nose icon fits in the box */
+ if (height < 100)
+ height = 100;
+
+ if(width < 105 + font->max_bounds.width*STRING_LENGTH)
+ width = 105 + font->max_bounds.width*STRING_LENGTH;
+ box_x = (Width - width) / 2;
+ time_x = prompt_x = box_x + 105;
+
+ time_y = prompt_y = Height / 2;
+ box_y = prompt_y - 3 * font_height(font);
+
+ /* erase current guy -- text message may still exist */
+ XSetForeground(dpy, gc, Black);
+ XFillRectangle(dpy, window, gc, x, y, 64, 64);
+ talk(1); /* forcefully erase message if one is being displayed */
+ /* Clear area in middle of screen for prompt box */
+ XSetForeground(dpy, gc, White);
+ XFillRectangle(dpy, window, gc, box_x, box_y, width, height);
+
+ /* make a box that's 5 pixels thick. Then add a thin box inside it */
+ XSetForeground(dpy, gc, Black);
+ XSetLineAttributes(dpy, gc, 5, 0, 0, 0);
+ XDrawRectangle(dpy, window, gc, box_x+5, box_y+5, width-10, height-10);
+ XSetLineAttributes(dpy, gc, 0, 0, 0, 0);
+ XDrawRectangle(dpy, window, gc, box_x+12, box_y+12, width-23, height-23);
+
+ XDrawString(dpy, window, gc,
+ prompt_x, prompt_y-font_height(font),
+ userprompt, strlen(userprompt));
+ XDrawString(dpy, window, gc, prompt_x, prompt_y, PROMPT, strlen(PROMPT));
+ /* set background for copyplane and DrawImageString; need reverse video */
+ XSetBackground(dpy, gc, White);
+ XCopyPlane(dpy, right0, window, gc, 0,0, 64,64,
+ box_x + 20, box_y + (height - 64)/2, 1L);
+ prompt_x += XTextWidth(font, PROMPT, strlen(PROMPT));
+ time_y += 2*font_height(font);
+}
+
+static void
+RaiseWindow(Widget w, XEvent *ev, String *s, Cardinal *n)
+{
+ Widget x;
+ if(!XtIsRealized(w))
+ return;
+ x = XtParent(w);
+ XRaiseWindow(dpy, XtWindow(x));
+}
+
+
+static void
+ClearWindow(Widget w, XEvent *_event, String *_s, Cardinal *_n)
+{
+ XExposeEvent *event = (XExposeEvent *)_event;
+ if (!XtIsRealized(w))
+ return;
+ XClearArea(dpy, XtWindow(w), event->x, event->y,
+ event->width, event->height, False);
+ if (state == GET_PASSWD)
+ post_prompt_box(XtWindow(w));
+ if (timeout_id == 0 && event->count == 0) {
+ timeout_id = XtAppAddTimeOut(app, 1000L, move, NULL);
+ /* first grab the input focus */
+ XSetInputFocus(dpy, XtWindow(w), RevertToPointerRoot, CurrentTime);
+ /* now grab the pointer and keyboard and contrain to this window */
+ XGrabPointer(dpy, XtWindow(w), TRUE, 0, GrabModeAsync,
+ GrabModeAsync, XtWindow(w), None, CurrentTime);
+ }
+}
+
+static void
+countdown(XtPointer _t, XtIntervalId *_d)
+{
+ int *timeout = (int *)_t;
+ char buf[128];
+ time_t seconds;
+
+ if (--(*timeout) < 0) {
+ XExposeEvent event;
+ XtRemoveTimeOut(timeout_id);
+ state = IS_MOVING;
+ event.x = event.y = 0;
+ event.width = Width, event.height = Height;
+ ClearWindow(widget, (XEvent *)&event, 0, 0);
+ timeout_id = XtAppAddTimeOut(app, 200L, move, NULL);
+ return;
+ }
+ seconds = time(0) - locked_at;
+ if (seconds >= 3600)
+ snprintf(buf, sizeof(buf),
+ "Locked for %d:%02d:%02d ",
+ (int)seconds/3600, (int)seconds/60%60, (int)seconds%60);
+ else
+ snprintf(buf, sizeof(buf),
+ "Locked for %2d:%02d ",
+ (int)seconds/60, (int)seconds%60);
+
+ XDrawImageString(dpy, XtWindow(widget), gc,
+ time_x, time_y, buf, strlen(buf));
+ XtAppAddTimeOut(app, 1000L, countdown, timeout);
+ return;
+}
+
+#ifdef KRB5
+static int
+verify_krb5(const char *password)
+{
+ krb5_error_code ret;
+ krb5_ccache id;
+
+ krb5_cc_default(context, &id);
+ ret = krb5_verify_user(context,
+ client,
+ id,
+ password,
+ 0,
+ NULL);
+ if (ret == 0){
+#ifdef KRB4
+ if (krb5_config_get_bool(context, NULL,
+ "libdefaults",
+ "krb4_get_tickets",
+ NULL)) {
+ CREDENTIALS c;
+ krb5_creds mcred, cred;
+ char krb4tkfile[MAXPATHLEN];
+
+ krb5_make_principal(context, &mcred.server,
+ client->realm,
+ "krbtgt",
+ client->realm,
+ NULL);
+ ret = krb5_cc_retrieve_cred(context, id, 0, &mcred, &cred);
+ if(ret == 0) {
+ ret = krb524_convert_creds_kdc(context, id, &cred, &c);
+ if(ret == 0)
+ tf_setup(&c, c.pname, c.pinst);
+ memset(&c, 0, sizeof(c));
+ krb5_free_creds_contents(context, &cred);
+ }
+ krb5_free_principal(context, mcred.server);
+ }
+ if (k_hasafs())
+ krb5_afslog(context, id, NULL, NULL);
+#endif
+ return 0;
+ }
+ if (ret != KRB5KRB_AP_ERR_MODIFIED)
+ krb5_warn(context, ret, "verify_krb5");
+
+ return -1;
+}
+#endif
+
+static int
+verify(char *password)
+{
+ int ret;
+
+ /*
+ * First try with root password, if allowed.
+ */
+ if ( appres.accept_root
+ && strcmp(crypt(password, root_cpass), root_cpass) == 0)
+ return 0;
+
+ /*
+ * Password that log out user
+ */
+ if (getuid() != 0 &&
+ geteuid() != 0 &&
+ (time(0) - locked_at) > ALLOW_LOGOUT &&
+ strcmp(crypt(password, appres.logoutPasswd), appres.logoutPasswd) == 0)
+ {
+ signal(SIGHUP, SIG_IGN);
+ kill(-1, SIGHUP);
+ sleep(5);
+ /* If the X-server shut down then so will we, else
+ * continue */
+ signal(SIGHUP, SIG_DFL);
+ }
+
+ /*
+ * Try copy of users password.
+ */
+ if (strcmp(crypt(password, user_cpass), user_cpass) == 0)
+ return 0;
+
+ /*
+ * Try to verify as user in case password change.
+ */
+ if (unix_verify_user(login, password) == 0)
+ return 0;
+
+#ifdef KRB5
+ /*
+ * Try to verify as user with kerberos 5.
+ */
+ if(verify_krb5(password) == 0)
+ return 0;
+#endif
+
+#ifdef KRB4
+ /*
+ * Try to verify as user with kerberos 4.
+ */
+ ret = krb_verify_user(name, inst, realm, password,
+ KRB_VERIFY_NOT_SECURE, NULL);
+ if (ret == KSUCCESS){
+ if (k_hasafs())
+ krb_afslog(NULL, NULL);
+ return 0;
+ }
+ if (ret != INTK_BADPW)
+ warnx ("warning: %s",
+ (ret < 0) ? strerror(ret) : krb_get_err_text(ret));
+#endif
+
+ return -1;
+}
+
+
+static void
+GetPasswd(Widget w, XEvent *_event, String *_s, Cardinal *_n)
+{
+ XKeyEvent *event = (XKeyEvent *)_event;
+ static char passwd[MAX_PASSWD_LENGTH];
+ static int cnt;
+ static int is_ctrl = XNLOCK_NOCTRL;
+ char c;
+ KeySym keysym;
+ int echolen;
+ int old_state = state;
+
+ if (event->type == ButtonPress) {
+ x = event->x, y = event->y;
+ return;
+ }
+ if (state == IS_MOVING) {
+ /* guy is running around--change to post prompt box. */
+ XtRemoveTimeOut(timeout_id);
+ state = GET_PASSWD;
+ if (appres.ignore_passwd || !strlen(user_cpass))
+ leave();
+ post_prompt_box(XtWindow(w));
+ cnt = 0;
+ time_left = 30;
+ countdown((XtPointer)&time_left, 0);
+ }
+ if (event->type == KeyRelease) {
+ keysym = XLookupKeysym(event, 0);
+ if (keysym == XK_Control_L || keysym == XK_Control_R) {
+ is_ctrl = XNLOCK_NOCTRL;
+ }
+ }
+ if (event->type != KeyPress)
+ return;
+
+ time_left = 30;
+
+ keysym = XLookupKeysym(event, 0);
+ if (keysym == XK_Control_L || keysym == XK_Control_R) {
+ is_ctrl = XNLOCK_CTRL;
+ return;
+ }
+ if (!XLookupString(event, &c, 1, &keysym, 0))
+ return;
+ if (keysym == XK_Return || keysym == XK_Linefeed) {
+ passwd[cnt] = 0;
+ if(old_state == IS_MOVING)
+ return;
+ XtRemoveTimeOut(timeout_id);
+
+ if(verify(passwd) == 0)
+ leave();
+
+ cnt = 0;
+
+ XDrawImageString(dpy, XtWindow(widget), gc,
+ time_x, time_y, FAIL_MSG, strlen(FAIL_MSG));
+ time_left = 0;
+ timeout_id = XtAppAddTimeOut(app, 2000L, countdown, &time_left);
+ return;
+ }
+ if (keysym == XK_BackSpace || keysym == XK_Delete || keysym == XK_Left) {
+ if (cnt)
+ passwd[cnt--] = ' ';
+ } else if (keysym == XK_u && is_ctrl == XNLOCK_CTRL) {
+ while (cnt) {
+ passwd[cnt--] = ' ';
+ echolen = min(cnt, STRING_LENGTH);
+ XDrawImageString(dpy, XtWindow(w), gc,
+ prompt_x, prompt_y, STRING, echolen);
+ XDrawImageString(dpy, XtWindow(w), gc,
+ prompt_x + XTextWidth(font, STRING, echolen),
+ prompt_y, SPACE_STRING, STRING_LENGTH - echolen + 1);
+ }
+ } else if (isprint(c)) {
+ if ((cnt + 1) >= MAX_PASSWD_LENGTH)
+ XBell(dpy, 50);
+ else
+ passwd[cnt++] = c;
+ } else
+ return;
+ echolen = min(cnt, STRING_LENGTH);
+ XDrawImageString(dpy, XtWindow(w), gc,
+ prompt_x, prompt_y, STRING, echolen);
+ XDrawImageString(dpy, XtWindow(w), gc,
+ prompt_x + XTextWidth(font, STRING, echolen),
+ prompt_y, SPACE_STRING, STRING_LENGTH - echolen +1);
+}
+
+#include "nose.0.left"
+#include "nose.1.left"
+#include "nose.0.right"
+#include "nose.1.right"
+#include "nose.left.front"
+#include "nose.right.front"
+#include "nose.front"
+#include "nose.down"
+
+static void
+init_images(void)
+{
+ static Pixmap *images[] = {
+ &left0, &left1, &right0, &right1,
+ &left_front, &right_front, &front, &down
+ };
+ static unsigned char *bits[] = {
+ nose_0_left_bits, nose_1_left_bits, nose_0_right_bits,
+ nose_1_right_bits, nose_left_front_bits, nose_right_front_bits,
+ nose_front_bits, nose_down_bits
+ };
+ int i;
+
+ for (i = 0; i < XtNumber(images); i++)
+ if (!(*images[i] =
+ XCreatePixmapFromBitmapData(dpy, DefaultRootWindow(dpy),
+ (char*)(bits[i]), 64, 64, 1, 0, 1)))
+ XtError("Can't load nose images");
+}
+
+static void
+talk(int force_erase)
+{
+ int width = 0, height, Z, total = 0;
+ static int X, Y, talking;
+ static struct { int x, y, width, height; } s_rect;
+ char *p, *p2;
+ char buf[BUFSIZ], args[MAXLINES][256];
+
+ /* clear what we've written */
+ if (talking || force_erase) {
+ if (!talking)
+ return;
+ if (talking == 2) {
+ XSetForeground(dpy, gc, Black);
+ XDrawString(dpy, XtWindow(widget), gc, X, Y, words, strlen(words));
+ } else if (talking == 1) {
+ XSetForeground(dpy, gc, Black);
+ XFillRectangle(dpy, XtWindow(widget), gc, s_rect.x-5, s_rect.y-5,
+ s_rect.width+10, s_rect.height+10);
+ }
+ talking = 0;
+ if (!force_erase)
+ timeout_id = XtAppAddTimeOut(app, 40L,
+ (XtTimerCallbackProc)move,
+ NULL);
+ return;
+ }
+ XSetForeground(dpy, gc, White);
+ talking = 1;
+ walk(FRONT);
+ strlcpy (buf, words, sizeof(buf));
+ p = buf;
+
+ /* possibly avoid a lot of work here
+ * if no CR or only one, then just print the line
+ */
+ if (!(p2 = strchr(p, '\n')) || !p2[1]) {
+ int w;
+
+ if (p2)
+ *p2 = 0;
+ w = XTextWidth(font, words, strlen(words));
+ X = x + 32 - w/2;
+ Y = y - 5 - font_height(font);
+ /* give us a nice 5 pixel margin */
+ if (X < 5)
+ X = 5;
+ else if (X + w + 15 > (int)Width + 5)
+ X = Width - w - 5;
+ if (Y < 5)
+ Y = y + 64 + 5 + font_height(font);
+ XDrawString(dpy, XtWindow(widget), gc, X, Y, words, strlen(words));
+ timeout_id = XtAppAddTimeOut(app, 5000L, (XtTimerCallbackProc)talk,
+ NULL);
+ talking++;
+ return;
+ }
+
+ /* p2 now points to the first '\n' */
+ for (height = 0; p; height++) {
+ int w;
+ *p2 = 0;
+ if ((w = XTextWidth(font, p, p2 - p)) > width)
+ width = w;
+ total += p2 - p; /* total chars; count to determine reading time */
+ strlcpy(args[height], p, sizeof(args[height]));
+ if (height == MAXLINES - 1) {
+ puts("Message too long!");
+ break;
+ }
+ p = p2+1;
+ if (!(p2 = strchr(p, '\n')))
+ break;
+ }
+ height++;
+
+ /* Figure out the height and width in pixels (height, width) extend
+ * the new box by 15 pixels on the sides (30 total) top and bottom.
+ */
+ s_rect.width = width + 30;
+ s_rect.height = height * font_height(font) + 30;
+ if (x - s_rect.width - 10 < 5)
+ s_rect.x = 5;
+ else
+ if ((s_rect.x = x+32-(s_rect.width+15)/2)
+ + s_rect.width+15 > (int)Width-5)
+ s_rect.x = Width - 15 - s_rect.width;
+ if (y - s_rect.height - 10 < 5)
+ s_rect.y = y + 64 + 5;
+ else
+ s_rect.y = y - 5 - s_rect.height;
+
+ XSetForeground(dpy, gc, White);
+ XFillRectangle(dpy, XtWindow(widget), gc,
+ s_rect.x-5, s_rect.y-5, s_rect.width+10, s_rect.height+10);
+
+ /* make a box that's 5 pixels thick. Then add a thin box inside it */
+ XSetForeground(dpy, gc, Black);
+ XSetLineAttributes(dpy, gc, 5, 0, 0, 0);
+ XDrawRectangle(dpy, XtWindow(widget), gc,
+ s_rect.x, s_rect.y, s_rect.width-1, s_rect.height-1);
+ XSetLineAttributes(dpy, gc, 0, 0, 0, 0);
+ XDrawRectangle(dpy, XtWindow(widget), gc,
+ s_rect.x + 7, s_rect.y + 7, s_rect.width - 15,
+ s_rect.height - 15);
+
+ X = 15;
+ Y = 15 + font_height(font);
+
+ /* now print each string in reverse order (start at bottom of box) */
+ for (Z = 0; Z < height; Z++) {
+ XDrawString(dpy, XtWindow(widget), gc, s_rect.x+X, s_rect.y+Y,
+ args[Z], strlen(args[Z]));
+ Y += font_height(font);
+ }
+ timeout_id = XtAppAddTimeOut(app, (total/15) * 1000,
+ (XtTimerCallbackProc)talk, NULL);
+}
+
+static unsigned long
+look(void)
+{
+ XSetForeground(dpy, gc, White);
+ XSetBackground(dpy, gc, Black);
+ if (rand() % 3) {
+ XCopyPlane(dpy, (rand() & 1)? down : front, XtWindow(widget), gc,
+ 0, 0, 64,64, x, y, 1L);
+ return 1000L;
+ }
+ if (!(rand() % 5))
+ return 0;
+ if (rand() % 3) {
+ XCopyPlane(dpy, (rand() & 1)? left_front : right_front,
+ XtWindow(widget), gc, 0, 0, 64,64, x, y, 1L);
+ return 1000L;
+ }
+ if (!(rand() % 5))
+ return 0;
+ XCopyPlane(dpy, (rand() & 1)? left0 : right0, XtWindow(widget), gc,
+ 0, 0, 64,64, x, y, 1L);
+ return 1000L;
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ Widget override;
+ XGCValues gcvalues;
+
+ setprogname (argv[0]);
+
+ /*
+ * Must be setuid root to read /etc/shadow, copy encrypted
+ * passwords here and then switch to sane uid.
+ */
+ {
+ struct passwd *pw;
+ uid_t uid = getuid();
+ if (!(pw = k_getpwuid(0)))
+ errx (1, "can't get root's passwd!");
+ strlcpy(root_cpass, pw->pw_passwd, sizeof(root_cpass));
+
+ if (!(pw = k_getpwuid(uid)))
+ errx (1, "Can't get your password entry!");
+ strlcpy(user_cpass, pw->pw_passwd, sizeof(user_cpass));
+ setuid(uid);
+ if (uid != 0 && setuid(0) != -1) {
+ fprintf(stderr, "Failed to drop privileges!\n");
+ exit(1);
+ }
+ /* Now we're no longer running setuid root. */
+ strlcpy(login, pw->pw_name, sizeof(login));
+ }
+
+ srand(getpid());
+ for (i = 0; i < STRING_LENGTH; i++)
+ STRING[i] = ((unsigned long)rand() % ('~' - ' ')) + ' ';
+
+ locked_at = time(0);
+
+ snprintf(userprompt, sizeof(userprompt), "User: %s", login);
+#ifdef KRB4
+ krb_get_default_principal(name, inst, realm);
+ snprintf(userprompt, sizeof(userprompt), "User: %s",
+ krb_unparse_name_long(name, inst, realm));
+#endif
+#ifdef KRB5
+ {
+ krb5_error_code ret;
+ char *str;
+
+ ret = krb5_init_context(&context);
+ if (ret)
+ errx (1, "krb5_init_context failed: %d", ret);
+ krb5_get_default_principal(context, &client);
+ krb5_unparse_name(context, client, &str);
+ snprintf(userprompt, sizeof(userprompt), "User: %s", str);
+ free(str);
+ }
+#endif
+
+ override = XtVaAppInitialize(&app, "XNlock", options, XtNumber(options),
+ (Cardinal*)&argc, argv, NULL,
+ XtNoverrideRedirect, True,
+ NULL);
+
+ XtVaGetApplicationResources(override,(XtPointer)&appres,
+ resources,XtNumber(resources),
+ NULL);
+ /* the background is black and the little guy is white */
+ Black = appres.bg;
+ White = appres.fg;
+
+ if (appres.destroytickets) {
+#ifdef KRB4
+ int fd;
+
+ dest_tkt(); /* Nuke old ticket file */
+ /* but keep a place holder */
+ fd = open (TKT_FILE, O_WRONLY | O_CREAT | O_EXCL, 0600);
+ if (fd >= 0)
+ close (fd);
+#endif
+ }
+
+ dpy = XtDisplay(override);
+
+ if (dpy == 0)
+ errx (1, "Error: Can't open display");
+
+ Width = DisplayWidth(dpy, DefaultScreen(dpy)) + 2;
+ Height = DisplayHeight(dpy, DefaultScreen(dpy)) + 2;
+
+ for(i = 0; i < ScreenCount(dpy); i++){
+ Widget shell, core;
+
+ struct xxx{
+ Pixel bg;
+ }res;
+
+ XtResource Res[] = {
+ { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
+ XtOffsetOf(struct xxx, bg), XtRString, "black" }
+ };
+
+ if(i == DefaultScreen(dpy))
+ continue;
+
+ shell = XtVaAppCreateShell(NULL,NULL, applicationShellWidgetClass, dpy,
+ XtNscreen, ScreenOfDisplay(dpy, i),
+ XtNoverrideRedirect, True,
+ XtNx, -1,
+ XtNy, -1,
+ NULL);
+
+ XtVaGetApplicationResources(shell, (XtPointer)&res,
+ Res, XtNumber(Res),
+ NULL);
+
+ core = XtVaCreateManagedWidget("_foo", widgetClass, shell,
+ XtNwidth, DisplayWidth(dpy, i),
+ XtNheight, DisplayHeight(dpy, i),
+ XtNbackground, res.bg,
+ NULL);
+ XtRealizeWidget(shell);
+ }
+
+ widget = XtVaCreateManagedWidget("_foo", widgetClass, override,
+ XtNwidth, Width,
+ XtNheight, Height,
+ XtNbackground, Black,
+ NULL);
+
+ init_words(--argc, ++argv);
+ init_images();
+
+ gcvalues.foreground = Black;
+ gcvalues.background = White;
+
+
+ font = appres.font;
+ gcvalues.font = font->fid;
+ gcvalues.graphics_exposures = False;
+ gc = XCreateGC(dpy, DefaultRootWindow(dpy),
+ GCForeground | GCBackground | GCGraphicsExposures | GCFont,
+ &gcvalues);
+
+ x = Width / 2;
+ y = Height / 2;
+ srand (time(0));
+ state = IS_MOVING;
+
+ {
+ static XtActionsRec actions[] = {
+ { "ClearWindow", ClearWindow },
+ { "GetPasswd", GetPasswd },
+ { "RaiseWindow", RaiseWindow },
+ };
+ XtAppAddActions(app, actions, XtNumber(actions));
+ XtOverrideTranslations(widget,
+ XtParseTranslationTable(
+ "<Expose>: ClearWindow() \n"
+ "<BtnDown>: GetPasswd() \n"
+ "<Visible>: RaiseWindow() \n"
+ "<KeyRelease>: GetPasswd() \n"
+ "<KeyPress>: GetPasswd()"));
+ }
+
+ XtRealizeWidget(override);
+ if((i = XGrabPointer(dpy, XtWindow(widget), True, 0, GrabModeAsync,
+ GrabModeAsync, XtWindow(widget),
+ None, CurrentTime)) != 0)
+ errx(1, "Failed to grab pointer (%d)", i);
+
+ if((i = XGrabKeyboard(dpy, XtWindow(widget), True, GrabModeAsync,
+ GrabModeAsync, CurrentTime)) != 0)
+ errx(1, "Failed to grab keyboard (%d)", i);
+ ScreenSaver(1);
+ XtAppMainLoop(app);
+ exit(0);
+}
+
diff --git a/crypto/heimdal/appl/xnlock/xnlock.cat1 b/crypto/heimdal/appl/xnlock/xnlock.cat1
new file mode 100644
index 0000000..dde8eef
--- /dev/null
+++ b/crypto/heimdal/appl/xnlock/xnlock.cat1
@@ -0,0 +1,132 @@
+
+
+
+XNLOCK(1L) XNLOCK(1L)
+
+
+
+NAME
+ xnlock - amusing lock screen program with message for passers-by
+
+SYNOPSIS
+ xxnnlloocckk [ _o_p_t_i_o_n_s ] [ _m_e_s_s_a_g_e ]
+
+DESCRIPTION
+ _x_n_l_o_c_k is a program that acts as a screen saver for workstations running
+ X11. It also "locks" the screen such that the workstation can be left
+ unattended without worry that someone else will walk up to it and mess
+ everything up. When _x_n_l_o_c_k is running, a little man with a big nose and a
+ hat runs around spewing out messages to the screen. By default, the mes-
+ sages are "humorous", but that depends on your sense of humor.
+
+ If a key or mouse button is pressed, a prompt is printed requesting the
+ user's password. If a RETURN is not typed within 30 seconds, the little
+ man resumes running around.
+
+ Text on the command line is used as the message. For example:
+ % xnlock I'm out to lunch for a couple of hours.
+ Note the need to quote shell metacharacters.
+
+ In the absence of flags or text, _x_n_l_o_c_k displays random fortunes.
+
+OPTIONS
+ Command line options override all resource specifications. All arguments
+ that are not associated with a command line option is taken to be message
+ text that the little man will "say" every once in a while. The resource
+ xxnnlloocckk..tteexxtt may be set to a string.
+
+ --ffnn _f_o_n_t_n_a_m_e
+ The default font is the first 18 point font in the _n_e_w _c_e_n_t_u_r_y _s_c_h_o_o_l_-
+ _b_o_o_k family. While larger fonts are recokmmended over smaller ones,
+ any font in the server's font list will work. The resource to use for
+ this option is xxnnlloocckk..ffoonntt.
+
+ --ffiilleennaammee _f_i_l_e_n_a_m_e
+ Take the message to be displayed from the file _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e
+ is not specified, _$_H_O_M_E_/_._m_s_g_f_i_l_e is used. If the contents of the file
+ are changed during runtime, the most recent text of the file is used
+ (allowing the displayed message to be altered remotely). Carriage
+ returns within the text are allowed, but tabs or other control charac-
+ ters are not translated and should not be used. The resource avail-
+ able for this option is xxnnlloocckk..ffiillee.
+
+ --aarr Accept root's password to unlock screen. This option is true by
+ default. The reason for this is so that someone's screen may be
+ unlocked by autorized users in case of emergency and the person run-
+ ning the program is still out to lunch. The resource available for
+ specifying this option is xxnnlloocckk..aacccceeppttRRoooottPPaasssswwdd.
+
+ --nnooaarr
+ Don't accept root's password. This option is for paranoids who fear
+ their peers might breakin using root's password and remove their files
+ anyway. Specifying this option on the command line overrides the
+ xxnnlloocckk..aacccceeppttRRoooottPPaasssswwdd if set to True.
+
+ --iipp Ignore password prompt. The resource available for this option is
+ xxnnlloocckk..iiggnnoorreePPaasssswwdd.
+
+ --nnooiipp
+ Don't ignore password prompt. This is available in order to override
+ the resource iiggnnoorreePPaasssswwdd if set to True.
+
+ --ffgg _c_o_l_o_r
+ Specifies the foreground color. The resource available for this is
+ xxnnlloocckk..ffoorreeggrroouunndd.
+
+ --bbgg _c_o_l_o_r
+ Specifies the background color. The resource available for this is
+ xxnnlloocckk..bbaacckkggrroouunndd.
+
+ --rrvv Reverse the foreground and background colors. The resource for this
+ is xxvvnnlloocckk..rreevveerrsseeVViiddeeoo.
+
+ --nnoorrvv
+ Don't use reverse video. This is available to override the reverseV-
+ ideo resource if set to True.
+
+ --pprroogg _p_r_o_g_r_a_m
+ Receive message text from the running program _p_r_o_g_r_a_m. If there are
+ arguments to _p_r_o_g_r_a_m, encase them with the name of the program in
+ quotes (e.g. xnlock -t "fortune -o"). The resource for this is
+ xxnnlloocckk..pprrooggrraamm.
+
+RESOURCES
+ xnlock.font: fontname
+ xnlock.foreground: color
+ xnlock.background: color
+ xnlock.reverseVideo: True/False
+ xnlock.text: Some random text string
+ xnlock.program: program [args]
+ xnlock.ignorePasswd: True/False
+ xnlock.acceptRootPasswd: True/False
+
+FILES
+ _x_n_l_o_c_k executable file
+ ~/.msgfile default message file
+
+AUTHOR
+ Dan Heller <argv@sun.com> Copyright (c) 1985, 1990.
+ The original version of this program was written using pixrects on a Sun 2
+ running SunOS 1.1.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
OpenPOWER on IntegriCloud