aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuido Guenther <agx@sigxcpu.org>2007-11-19 17:28:47 +0100
committerGuido Guenther <agx@sigxcpu.org>2007-11-19 17:28:47 +0100
commit347225c68836d1942d897d01bcb66b964fb3cd3a (patch)
treee156728ed3e46995a70505b4656e8bc98ef10b49 /src
downloadkrb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.tar.gz
krb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.tar.bz2
krb5-auth-dialog-347225c68836d1942d897d01bcb66b964fb3cd3a.zip
Imported upstream version 0.6
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am27
-rw-r--r--src/Makefile.in621
-rw-r--r--src/dummy-strings.c649
-rw-r--r--src/krb5-auth-dialog.1.in37
-rw-r--r--src/krb5-auth-dialog.c592
-rw-r--r--src/krb5-auth-dialog.desktop.in9
-rw-r--r--src/krb5-auth-dialog.glade252
7 files changed, 2187 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..282e938
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,27 @@
+INCLUDES = \
+ -DGLADEDIR=\""$(datadir)/krb5-auth-dialog/"\"
+
+bin_PROGRAMS = krb5-auth-dialog
+man_MANS = krb5-auth-dialog.1
+
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = krb5-auth-dialog.desktop.in
+autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
+
+krb5_auth_dialog_SOURCES = \
+ krb5-auth-dialog.c \
+ dummy-strings.c
+
+krb5_auth_dialog_LDADD = @NETWORK_MANAGER_LIBS@ @KRB5_LIBS@ @GNOME_LIBS@
+
+gladedir = $(datadir)/krb5-auth-dialog
+glade_DATA = \
+ krb5-auth-dialog.glade
+
+EXTRA_DIST = \
+ $(glade_DATA) \
+ $(autostart_in_files) \
+ krb5-auth-dialog.1.in
+
+DISTCLEANFILES = krb5-auth-dialog.desktop
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..630ddd3
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,621 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_NETWORK_MANAGER_FALSE = @ENABLE_NETWORK_MANAGER_FALSE@
+ENABLE_NETWORK_MANAGER_TRUE = @ENABLE_NETWORK_MANAGER_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+KRB5_CFLAGS = @KRB5_CFLAGS@
+KRB5_CONFIG = @KRB5_CONFIG@
+KRB5_LIBS = @KRB5_LIBS@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+NETWORK_MANAGER_CFLAGS = @NETWORK_MANAGER_CFLAGS@
+NETWORK_MANAGER_LIBS = @NETWORK_MANAGER_LIBS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+check_interval = @check_interval@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+minimum_lifetime = @minimum_lifetime@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+INCLUDES = \
+ -DGLADEDIR=\""$(datadir)/krb5-auth-dialog/"\"
+
+
+bin_PROGRAMS = krb5-auth-dialog
+man_MANS = krb5-auth-dialog.1
+
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = krb5-auth-dialog.desktop.in
+autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
+
+krb5_auth_dialog_SOURCES = \
+ krb5-auth-dialog.c \
+ dummy-strings.c
+
+
+krb5_auth_dialog_LDADD = @NETWORK_MANAGER_LIBS@ @KRB5_LIBS@ @GNOME_LIBS@
+
+gladedir = $(datadir)/krb5-auth-dialog
+glade_DATA = \
+ krb5-auth-dialog.glade
+
+
+EXTRA_DIST = \
+ $(glade_DATA) \
+ $(autostart_in_files) \
+ krb5-auth-dialog.1.in
+
+
+DISTCLEANFILES = krb5-auth-dialog.desktop
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = krb5-auth-dialog.1
+bin_PROGRAMS = krb5-auth-dialog$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+
+am_krb5_auth_dialog_OBJECTS = krb5-auth-dialog.$(OBJEXT) \
+ dummy-strings.$(OBJEXT)
+krb5_auth_dialog_OBJECTS = $(am_krb5_auth_dialog_OBJECTS)
+krb5_auth_dialog_DEPENDENCIES =
+krb5_auth_dialog_LDFLAGS =
+
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dummy-strings.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/krb5-auth-dialog.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(krb5_auth_dialog_SOURCES)
+
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(autostart_DATA) $(glade_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am krb5-auth-dialog.1.in
+SOURCES = $(krb5_auth_dialog_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+krb5-auth-dialog.1: $(top_builddir)/config.status krb5-auth-dialog.1.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+ rm -f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+krb5-auth-dialog$(EXEEXT): $(krb5_auth_dialog_OBJECTS) $(krb5_auth_dialog_DEPENDENCIES)
+ @rm -f krb5-auth-dialog$(EXEEXT)
+ $(LINK) $(krb5_auth_dialog_LDFLAGS) $(krb5_auth_dialog_OBJECTS) $(krb5_auth_dialog_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy-strings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5-auth-dialog.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@ fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+man1dir = $(mandir)/man1
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(man1dir)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_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/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ 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:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_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/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ 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
+autostartDATA_INSTALL = $(INSTALL_DATA)
+install-autostartDATA: $(autostart_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(autostartdir)
+ @list='$(autostart_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(autostartDATA_INSTALL) $$d$$p $(DESTDIR)$(autostartdir)/$$f"; \
+ $(autostartDATA_INSTALL) $$d$$p $(DESTDIR)$(autostartdir)/$$f; \
+ done
+
+uninstall-autostartDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(autostart_DATA)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(autostartdir)/$$f"; \
+ rm -f $(DESTDIR)$(autostartdir)/$$f; \
+ done
+gladeDATA_INSTALL = $(INSTALL_DATA)
+install-gladeDATA: $(glade_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(gladedir)
+ @list='$(glade_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+ $(gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+ done
+
+uninstall-gladeDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(glade_DATA)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+ rm -f $(DESTDIR)$(gladedir)/$$f; \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(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
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(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)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(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 "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS) $(DATA)
+
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(autostartdir) $(DESTDIR)$(gladedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-autostartDATA install-gladeDATA install-man
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man: install-man1
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-autostartDATA uninstall-binPROGRAMS \
+ uninstall-gladeDATA uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am info info-am install install-am install-autostartDATA \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-gladeDATA install-info install-info-am \
+ install-man install-man1 install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-autostartDATA \
+ uninstall-binPROGRAMS uninstall-gladeDATA uninstall-info-am \
+ uninstall-man uninstall-man1
+
+@INTLTOOL_DESKTOP_RULE@
+# 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/src/dummy-strings.c b/src/dummy-strings.c
new file mode 100644
index 0000000..adc8ea4
--- /dev/null
+++ b/src/dummy-strings.c
@@ -0,0 +1,649 @@
+/* This file is generated by hand from kerberos 1.3.4 by running
+ *
+ * ./etpo /path/to/krb5-1.3.4/ > dummy-strings.c
+ *
+ * It was then stripped of the meaningless messages (such as "Reserved
+ * error message [60-254]"). It is expected that not all these
+ * messages are translated.
+ */
+
+#include <glib/gi18n.h>
+
+const char *dummy[] = {
+ N_("Can't read ticket file"), /* test1.et:krb:KRB_MK_AP_TKFIL */
+ N_("Can't find ticket or TGT"), /* test1.et:krb:KRB_MK_AP_NOTKT */
+ N_("TGT expired"), /* test1.et:krb:KRB_MK_AP_TGTEXP */
+ N_("Can't decode authenticator"), /* test1.et:krb:KRB_RD_AP_UNDEC */
+ N_("Ticket expired"), /* test1.et:krb:KRB_RD_AP_EXP */
+ N_("Repeated request"), /* test1.et:krb:KRB_RD_AP_REPEAT */
+ N_("The ticket isn't for us"), /* test1.et:krb:KRB_RD_AP_NOT_US */
+ N_("Request is inconsistent"), /* test1.et:krb:KRB_RD_AP_INCON */
+ N_("Delta-T too big"), /* test1.et:krb:KRB_RD_AP_TIME */
+ N_("Incorrect net address"), /* test1.et:krb:KRB_RD_AP_BADD */
+ N_("Protocol version mismatch"), /* test1.et:krb:KRB_RD_AP_VERSION */
+ N_("Invalid message type"), /* test1.et:krb:KRB_RD_AP_MSG_TYPE */
+ N_("Message stream modified"), /* test1.et:krb:KRB_RD_AP_MODIFIED */
+ N_("Message out of order"), /* test1.et:krb:KRB_RD_AP_ORDER */
+ N_("Unauthorized request"), /* test1.et:krb:KRB_RD_AP_UNAUTHOR */
+ N_("Current password is null"), /* test1.et:krb:KRB_GT_PW_NULL */
+ N_("Incorrect current password"), /* test1.et:krb:KRB_GT_PW_BADPW */
+ N_("Protocol error"), /* test1.et:krb:KRB_GT_PW_PROT */
+ N_("Error returned by KDC"), /* test1.et:krb:KRB_GT_PW_KDCERR */
+ N_("Null ticket returned by KDC"), /* test1.et:krb:KRB_GT_PW_NULLTKT */
+ N_("Retry count exceeded"), /* test1.et:krb:KRB_SKDC_RETRY */
+ N_("Can't send request"), /* test1.et:krb:KRB_SKDC_CANT */
+ N_("Subsystem aborted"), /* ss_err.et:ss:SS_ET_SUBSYSTEM_ABORTED */
+ N_("Version mismatch"), /* ss_err.et:ss:SS_ET_VERSION_MISMATCH */
+ N_("No current invocation"), /* ss_err.et:ss:SS_ET_NULL_INV */
+ N_("No info directory"), /* ss_err.et:ss:SS_ET_NO_INFO_DIR */
+ N_("Command not found"), /* ss_err.et:ss:SS_ET_COMMAND_NOT_FOUND */
+ N_("Command line aborted"), /* ss_err.et:ss:SS_ET_LINE_ABORTED */
+ N_("End-of-file reached"), /* ss_err.et:ss:SS_ET_EOF */
+ N_("Permission denied"), /* ss_err.et:ss:SS_ET_PERMISSION_DENIED */
+ N_("Request table not found"), /* ss_err.et:ss:SS_ET_TABLE_NOT_FOUND */
+ N_("No info available"), /* ss_err.et:ss:SS_ET_NO_HELP_FILE */
+ N_("Shell escapes are disabled"), /* ss_err.et:ss:SS_ET_ESCAPE_DISABLED */
+ N_("Sorry, this request is not yet implemented"), /* ss_err.et:ss:SS_ET_UNIMPLEMENTED */
+ N_("Profile version 0.0"), /* prof_err.et:prof:PROF_VERSION */
+ N_("Bad magic value in profile_node"), /* prof_err.et:prof:PROF_MAGIC_NODE */
+ N_("Profile section not found"), /* prof_err.et:prof:PROF_NO_SECTION */
+ N_("Profile relation not found"), /* prof_err.et:prof:PROF_NO_RELATION */
+ N_("Attempt to add a relation to node which is not a section"), /* prof_err.et:prof:PROF_ADD_NOT_SECTION */
+ N_("A profile section header has a non-zero value"), /* prof_err.et:prof:PROF_SECTION_WITH_VALUE */
+ N_("Bad linked list in profile structures"), /* prof_err.et:prof:PROF_BAD_LINK_LIST */
+ N_("Bad group level in profile strctures"), /* prof_err.et:prof:PROF_BAD_GROUP_LVL */
+ N_("Bad parent pointer in profile strctures"), /* prof_err.et:prof:PROF_BAD_PARENT_PTR */
+ N_("Bad magic value in profile iterator"), /* prof_err.et:prof:PROF_MAGIC_ITERATOR */
+ N_("Can't set value on section node"), /* prof_err.et:prof:PROF_SET_SECTION_VALUE */
+ N_("Invalid argument passed to profile library"), /* prof_err.et:prof:PROF_EINVAL */
+ N_("Attempt to modify read-only profile"), /* prof_err.et:prof:PROF_READ_ONLY */
+ N_("Profile section header not at top level"), /* prof_err.et:prof:PROF_SECTION_NOTOP */
+ N_("Syntax error in profile section header"), /* prof_err.et:prof:PROF_SECTION_SYNTAX */
+ N_("Syntax error in profile relation"), /* prof_err.et:prof:PROF_RELATION_SYNTAX */
+ N_("Extra closing brace in profile"), /* prof_err.et:prof:PROF_EXTRA_CBRACE */
+ N_("Missing open brace in profile"), /* prof_err.et:prof:PROF_MISSING_OBRACE */
+ N_("Bad magic value in profile_t"), /* prof_err.et:prof:PROF_MAGIC_PROFILE */
+ N_("Bad magic value in profile_section_t"), /* prof_err.et:prof:PROF_MAGIC_SECTION */
+ N_("Iteration through all top level section not supported"), /* prof_err.et:prof:PROF_TOPSECTION_ITER_NOSUPP */
+ N_("Invalid profile_section object"), /* prof_err.et:prof:PROF_INVALID_SECTION */
+ N_("No more sections"), /* prof_err.et:prof:PROF_END_OF_SECTIONS */
+ N_("Bad nameset passed to query routine"), /* prof_err.et:prof:PROF_BAD_NAMESET */
+ N_("No profile file open"), /* prof_err.et:prof:PROF_NO_PROFILE */
+ N_("Bad magic value in profile_file_t"), /* prof_err.et:prof:PROF_MAGIC_FILE */
+ N_("Couldn't open profile file"), /* prof_err.et:prof:PROF_FAIL_OPEN */
+ N_("Section already exists"), /* prof_err.et:prof:PROF_EXISTS */
+ N_("Invalid boolean value"), /* prof_err.et:prof:PROF_BAD_BOOLEAN */
+ N_("Invalid integer value"), /* prof_err.et:prof:PROF_BAD_INTEGER */
+ N_("Bad magic value in profile_file_data_t"), /* prof_err.et:prof:PROF_MAGIC_FILE_DATA */
+ N_("Failed to unlock or grant streams pty."), /* pty_err.et:pty:PTY_GETPTY_STREAMS */
+ N_("fstat of master pty failed"), /* pty_err.et:pty:PTY_GETPTY_FSTAT */
+ N_("All terminal ports in use"), /* pty_err.et:pty:PTY_GETPTY_NOPTY */
+ N_("buffer to hold slave pty name is too short"), /* pty_err.et:pty:PTY_GETPTY_SLAVE_TOOLONG */
+ N_("Failed to open slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_OPENFAIL */
+ N_("Failed to chmod slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_CHMODFAIL */
+ N_("Unable to set controlling terminal"), /* pty_err.et:pty:PTY_OPEN_SLAVE_NOCTTY */
+ N_("Failed to chown slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_CHOWNFAIL */
+ N_("Call to line_push failed to push streams on slave pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_LINE_PUSHFAIL */
+ N_("Failed to push stream on slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_PUSH_FAIL */
+ N_("Failed to revoke slave side of pty"), /* pty_err.et:pty:PTY_OPEN_SLAVE_REVOKEFAIL */
+ N_("bad process type passed to pty_update_utmp"), /* pty_err.et:pty:PTY_UPDATE_UTMP_PROCTYPE_INVALID */
+ N_("Slave pty name is zero-length"), /* pty_err.et:pty:PTY_OPEN_SLAVE_TOOSHORT */
+ N_("Usage: kpasswd [principal_name]."), /* kpasswd_strings.et:kpws:KPW_STR_USAGE */
+ N_("Kerberos principal name %s is not recognized."), /* kpasswd_strings.et:kpws:KPW_STR_PRIN_UNKNOWN */
+ N_("while reading principal name from credential cache."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_LOOKING_AT_CC */
+ N_("Old Kerberos password is incorrect. Please try again."), /* kpasswd_strings.et:kpws:KPW_STR_OLD_PASSWORD_INCORRECT */
+ N_("Cannot establish a session with the Kerberos administrative server for\n\
+realm %s. %s."), /* kpasswd_strings.et:kpws:KPW_STR_CANT_OPEN_ADMIN_SERVER */
+ N_("New passwords do not match - password not changed.\n"), /* kpasswd_strings.et:kpws:KPW_STR_NEW_PASSWORD_MISMATCH */
+ N_("Kerberos password changed.\n"), /* kpasswd_strings.et:kpws:KPW_STR_PASSWORD_CHANGED */
+ N_("Password not changed."), /* kpasswd_strings.et:kpws:KPW_STR_PASSWORD_NOT_CHANGED */
+ N_("when parsing name %s."), /* kpasswd_strings.et:kpws:KPW_STR_PARSE_NAME */
+ N_("when unparsing name."), /* kpasswd_strings.et:kpws:KPW_STR_UNPARSE_NAME */
+ N_("Unable to identify user from password file."), /* kpasswd_strings.et:kpws:KPW_STR_NOT_IN_PASSWD_FILE */
+ N_("Changing password for %s."), /* kpasswd_strings.et:kpws:KPW_STR_CHANGING_PW_FOR */
+ N_("Old password"), /* kpasswd_strings.et:kpws:KPW_STR_OLD_PASSWORD_PROMPT */
+ N_("while reading new password."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_READING_PASSWORD */
+ N_("You must type a password. Passwords must be at least one character long."), /* kpasswd_strings.et:kpws:KPW_STR_NO_PASSWORD_READ */
+ N_("while trying to change password."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_TRYING_TO_CHANGE */
+ N_("while closing session with admin server and destroying tickets."), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_DESTROYING_ADMIN_SESSION */
+ N_("while freeing admin principal entry"), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_FREEING_PRINCIPAL */
+ N_("while freeing admin policy entry"), /* kpasswd_strings.et:kpws:KPW_STR_WHILE_FREEING_POLICY */
+ N_("Could not get password policy information for principal %s."), /* kpasswd_strings.et:kpws:KPW_STR_CANT_GET_POLICY_INFO */
+ N_("%s's password is controlled by the policy %s, which\nrequires a minimum of %u characters from at least %u classes (the five classes\nare lowercase, uppercase, numbers, punctuation, and all other characters)."), /* kpasswd_strings.et:kpws:KPW_STR_POLICY_EXPLANATION */
+ N_("Successfully imported %d record%s.\n"), /* import_err.et:imp:IMPORT_NO_ERR */
+ N_("Input not recognized as database dump"), /* import_err.et:imp:IMPORT_BAD_FILE */
+ N_("Bad token in dump file."), /* import_err.et:imp:IMPORT_BAD_TOKEN */
+ N_("Bad version in dump file"), /* import_err.et:imp:IMPORT_BAD_VERSION */
+ N_("Defective record encountered: "), /* import_err.et:imp:IMPORT_BAD_RECORD */
+ N_("Truncated input file detected."), /* import_err.et:imp:IMPORT_BAD_FOOTER */
+ N_("Import of dump failed"), /* import_err.et:imp:IMPORT_FAILED */
+ N_("Mismatched record count: %d record%s indicated, %d record%s scanned.\n"), /* import_err.et:imp:IMPORT_COUNT_MESSAGE */
+ N_("Number of records imported does not match count"), /* import_err.et:imp:IMPORT_MISMATCH_COUNT */
+ N_("Unknown command line option.\nUsage: ovsec_adm_import [filename]"), /* import_err.et:imp:IMPORT_UNK_OPTION */
+ N_("Warning -- continuing to import will overwrite existing databases!"), /* import_err.et:imp:IMPORT_WARN_DB */
+ N_("Database rename Failed!!"), /* import_err.et:imp:IMPORT_RENAME_FAILED */
+ N_("Extra data after footer is ignored."), /* import_err.et:imp:IMPORT_EXTRA_DATA */
+ N_("Proceed <y|n>?"), /* import_err.et:imp:IMPORT_CONFIRM */
+ N_("while opening input file"), /* import_err.et:imp:IMPORT_OPEN_DUMP */
+ N_("while importing databases"), /* import_err.et:imp:IMPORT_IMPORT */
+ N_("cannot open /dev/tty!!"), /* import_err.et:imp:IMPORT_TTY */
+ N_("while opening databases"), /* import_err.et:imp:IMPORT_RENAME_OPEN */
+ N_("while acquiring permanent lock"), /* import_err.et:imp:IMPORT_RENAME_LOCK */
+ N_("while releasing permanent lock"), /* import_err.et:imp:IMPORT_RENAME_UNLOCK */
+ N_("while closing databases"), /* import_err.et:imp:IMPORT_RENAME_CLOSE */
+ N_("while retrieving configuration parameters"), /* import_err.et:imp:IMPORT_GET_PARAMS */
+ N_("$Id: dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kdc5_err.et:kdc5:KDC5_RCSID */
+ N_("No server port found"), /* kdc5_err.et:kdc5:KDC5_NOPORT */
+ N_("Network not initialized"), /* kdc5_err.et:kdc5:KDC5_NONET */
+ N_("Short write while sending response"), /* kdc5_err.et:kdc5:KDC5_IO_RESPONSE */
+ N_("Cannot convert V5 keyblock"), /* krb524_err.et:k524:KRB524_BADKEY */
+ N_("Cannot convert V5 address information"), /* krb524_err.et:k524:KRB524_BADADDR */
+ N_("Cannot convert V5 principal"), /* krb524_err.et:k524:KRB524_BADPRINC */
+ N_("V5 realm name longer than V4 maximum"), /* krb524_err.et:k524:KRB524_BADREALM */
+ N_("Kerberos V4 error"), /* krb524_err.et:k524:KRB524_V4ERR */
+ N_("Encoding too large"), /* krb524_err.et:k524:KRB524_ENCFULL */
+ N_("Decoding out of data"), /* krb524_err.et:k524:KRB524_DECEMPTY */
+ N_("Service not responding"), /* krb524_err.et:k524:KRB524_NOTRESP */
+ N_("Kerberos version 4 support is disabled"), /* krb524_err.et:k524:KRB524_KRB4_DISABLED */
+ N_("No error"), /* krb5_err.et:krb5:KRB5KDC_ERR_NONE */
+ N_("Client's entry in database has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_NAME_EXP */
+ N_("Server's entry in database has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_EXP */
+ N_("Requested protocol version not supported"), /* krb5_err.et:krb5:KRB5KDC_ERR_BAD_PVNO */
+ N_("Client's key is encrypted in an old master key"), /* krb5_err.et:krb5:KRB5KDC_ERR_C_OLD_MAST_KVNO */
+ N_("Server's key is encrypted in an old master key"), /* krb5_err.et:krb5:KRB5KDC_ERR_S_OLD_MAST_KVNO */
+ N_("Client not found in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN */
+ N_("Server not found in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN */
+ N_("Principal has multiple entries in Kerberos database"), /* krb5_err.et:krb5:KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE */
+ N_("Client or server has a null key"), /* krb5_err.et:krb5:KRB5KDC_ERR_NULL_KEY */
+ N_("Ticket is ineligible for postdating"), /* krb5_err.et:krb5:KRB5KDC_ERR_CANNOT_POSTDATE */
+ N_("Requested effective lifetime is negative or too short"), /* krb5_err.et:krb5:KRB5KDC_ERR_NEVER_VALID */
+ N_("KDC policy rejects request"), /* krb5_err.et:krb5:KRB5KDC_ERR_POLICY */
+ N_("KDC can't fulfill requested option"), /* krb5_err.et:krb5:KRB5KDC_ERR_BADOPTION */
+ N_("KDC has no support for encryption type"), /* krb5_err.et:krb5:KRB5KDC_ERR_ETYPE_NOSUPP */
+ N_("KDC has no support for checksum type"), /* krb5_err.et:krb5:KRB5KDC_ERR_SUMTYPE_NOSUPP */
+ N_("KDC has no support for padata type"), /* krb5_err.et:krb5:KRB5KDC_ERR_PADATA_TYPE_NOSUPP */
+ N_("KDC has no support for transited type"), /* krb5_err.et:krb5:KRB5KDC_ERR_TRTYPE_NOSUPP */
+ N_("Clients credentials have been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_REVOKED */
+ N_("Credentials for server have been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_REVOKED */
+ N_("TGT has been revoked"), /* krb5_err.et:krb5:KRB5KDC_ERR_TGT_REVOKED */
+ N_("Client not yet valid - try again later"), /* krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_NOTYET */
+ N_("Server not yet valid - try again later"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_NOTYET */
+ N_("Password has expired"), /* krb5_err.et:krb5:KRB5KDC_ERR_KEY_EXP */
+ N_("Preauthentication failed"), /* krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_FAILED */
+ N_("Additional pre-authentication required"), /* krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_REQUIRED */
+ N_("Requested server and ticket don't match"), /* krb5_err.et:krb5:KRB5KDC_ERR_SERVER_NOMATCH */
+ N_("Decrypt integrity check failed"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BAD_INTEGRITY */
+ N_("Ticket expired"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_EXPIRED */
+ N_("Ticket not yet valid"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_NYV */
+ N_("Request is a replay"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_REPEAT */
+ N_("The ticket isn't for us"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_NOT_US */
+ N_("Ticket/authenticator don't match"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADMATCH */
+ N_("Clock skew too great"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_SKEW */
+ N_("Incorrect net address"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADADDR */
+ N_("Protocol version mismatch"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADVERSION */
+ N_("Invalid message type"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MSG_TYPE */
+ N_("Message stream modified"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MODIFIED */
+ N_("Message out of order"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADORDER */
+ N_("Illegal cross-realm ticket"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_ILL_CR_TKT */
+ N_("Key version is not available"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADKEYVER */
+ N_("Service key not available"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_NOKEY */
+ N_("Mutual authentication failed"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_MUT_FAIL */
+ N_("Incorrect message direction"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADDIRECTION */
+ N_("Alternative authentication method required"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_METHOD */
+ N_("Incorrect sequence number in message"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_BADSEQ */
+ N_("Inappropriate type of checksum in message"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_INAPP_CKSUM */
+ N_("Policy rejects transited path"), /* krb5_err.et:krb5:KRB5KRB_AP_PATH_NOT_ACCEPTED */
+ N_("Response too big for UDP, retry with TCP"), /* krb5_err.et:krb5:KRB5KRB_ERR_RESPONSE_TOO_BIG */
+ N_("Generic error (see e-text)"), /* krb5_err.et:krb5:KRB5KRB_ERR_GENERIC */
+ N_("Field is too long for this implementation"), /* krb5_err.et:krb5:KRB5KRB_ERR_FIELD_TOOLONG */
+ N_("Invalid flag for file lock mode"), /* krb5_err.et:krb5:KRB5_LIBOS_BADLOCKFLAG */
+ N_("Cannot read password"), /* krb5_err.et:krb5:KRB5_LIBOS_CANTREADPWD */
+ N_("Password mismatch"), /* krb5_err.et:krb5:KRB5_LIBOS_BADPWDMATCH */
+ N_("Password read interrupted"), /* krb5_err.et:krb5:KRB5_LIBOS_PWDINTR */
+ N_("Illegal character in component name"), /* krb5_err.et:krb5:KRB5_PARSE_ILLCHAR */
+ N_("Malformed representation of principal"), /* krb5_err.et:krb5:KRB5_PARSE_MALFORMED */
+ N_("Can't open/find Kerberos configuration file"), /* krb5_err.et:krb5:KRB5_CONFIG_CANTOPEN */
+ N_("Improper format of Kerberos configuration file"), /* krb5_err.et:krb5:KRB5_CONFIG_BADFORMAT */
+ N_("Insufficient space to return complete information"), /* krb5_err.et:krb5:KRB5_CONFIG_NOTENUFSPACE */
+ N_("Invalid message type specified for encoding"), /* krb5_err.et:krb5:KRB5_BADMSGTYPE */
+ N_("Credential cache name malformed"), /* krb5_err.et:krb5:KRB5_CC_BADNAME */
+ N_("Unknown credential cache type"), /* krb5_err.et:krb5:KRB5_CC_UNKNOWN_TYPE */
+ N_("Matching credential not found"), /* krb5_err.et:krb5:KRB5_CC_NOTFOUND */
+ N_("End of credential cache reached"), /* krb5_err.et:krb5:KRB5_CC_END */
+ N_("Request did not supply a ticket"), /* krb5_err.et:krb5:KRB5_NO_TKT_SUPPLIED */
+ N_("Wrong principal in request"), /* krb5_err.et:krb5:KRB5KRB_AP_WRONG_PRINC */
+ N_("Ticket has invalid flag set"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_INVALID */
+ N_("Requested principal and ticket don't match"), /* krb5_err.et:krb5:KRB5_PRINC_NOMATCH */
+ N_("KDC reply did not match expectations"), /* krb5_err.et:krb5:KRB5_KDCREP_MODIFIED */
+ N_("Clock skew too great in KDC reply"), /* krb5_err.et:krb5:KRB5_KDCREP_SKEW */
+ N_("Client/server realm mismatch in initial ticket request"), /* krb5_err.et:krb5:KRB5_IN_TKT_REALM_MISMATCH */
+ N_("Program lacks support for encryption type"), /* krb5_err.et:krb5:KRB5_PROG_ETYPE_NOSUPP */
+ N_("Program lacks support for key type"), /* krb5_err.et:krb5:KRB5_PROG_KEYTYPE_NOSUPP */
+ N_("Requested encryption type not used in message"), /* krb5_err.et:krb5:KRB5_WRONG_ETYPE */
+ N_("Program lacks support for checksum type"), /* krb5_err.et:krb5:KRB5_PROG_SUMTYPE_NOSUPP */
+ N_("Cannot find KDC for requested realm"), /* krb5_err.et:krb5:KRB5_REALM_UNKNOWN */
+ N_("Kerberos service unknown"), /* krb5_err.et:krb5:KRB5_SERVICE_UNKNOWN */
+ N_("Cannot contact any KDC for requested realm"), /* krb5_err.et:krb5:KRB5_KDC_UNREACH */
+ N_("No local name found for principal name"), /* krb5_err.et:krb5:KRB5_NO_LOCALNAME */
+ N_("Mutual authentication failed"), /* krb5_err.et:krb5:KRB5_MUTUAL_FAILED */
+ N_("Replay cache type is already registered"), /* krb5_err.et:krb5:KRB5_RC_TYPE_EXISTS */
+ N_("No more memory to allocate (in replay cache code)"), /* krb5_err.et:krb5:KRB5_RC_MALLOC */
+ N_("Replay cache type is unknown"), /* krb5_err.et:krb5:KRB5_RC_TYPE_NOTFOUND */
+ N_("Generic unknown RC error"), /* krb5_err.et:krb5:KRB5_RC_UNKNOWN */
+ N_("Message is a replay"), /* krb5_err.et:krb5:KRB5_RC_REPLAY */
+ N_("Replay I/O operation failed XXX"), /* krb5_err.et:krb5:KRB5_RC_IO */
+ N_("Replay cache type does not support non-volatile storage"), /* krb5_err.et:krb5:KRB5_RC_NOIO */
+ N_("Replay cache name parse/format error"), /* krb5_err.et:krb5:KRB5_RC_PARSE */
+ N_("End-of-file on replay cache I/O"), /* krb5_err.et:krb5:KRB5_RC_IO_EOF */
+ N_("No more memory to allocate (in replay cache I/O code)"), /* krb5_err.et:krb5:KRB5_RC_IO_MALLOC */
+ N_("Permission denied in replay cache code"), /* krb5_err.et:krb5:KRB5_RC_IO_PERM */
+ N_("I/O error in replay cache i/o code"), /* krb5_err.et:krb5:KRB5_RC_IO_IO */
+ N_("Generic unknown RC/IO error"), /* krb5_err.et:krb5:KRB5_RC_IO_UNKNOWN */
+ N_("Insufficient system space to store replay information"), /* krb5_err.et:krb5:KRB5_RC_IO_SPACE */
+ N_("Can't open/find realm translation file"), /* krb5_err.et:krb5:KRB5_TRANS_CANTOPEN */
+ N_("Improper format of realm translation file"), /* krb5_err.et:krb5:KRB5_TRANS_BADFORMAT */
+ N_("Can't open/find lname translation database"), /* krb5_err.et:krb5:KRB5_LNAME_CANTOPEN */
+ N_("No translation available for requested principal"), /* krb5_err.et:krb5:KRB5_LNAME_NOTRANS */
+ N_("Improper format of translation database entry"), /* krb5_err.et:krb5:KRB5_LNAME_BADFORMAT */
+ N_("Cryptosystem internal error"), /* krb5_err.et:krb5:KRB5_CRYPTO_INTERNAL */
+ N_("Key table name malformed"), /* krb5_err.et:krb5:KRB5_KT_BADNAME */
+ N_("Unknown Key table type"), /* krb5_err.et:krb5:KRB5_KT_UNKNOWN_TYPE */
+ N_("Key table entry not found"), /* krb5_err.et:krb5:KRB5_KT_NOTFOUND */
+ N_("End of key table reached"), /* krb5_err.et:krb5:KRB5_KT_END */
+ N_("Cannot write to specified key table"), /* krb5_err.et:krb5:KRB5_KT_NOWRITE */
+ N_("Error writing to key table"), /* krb5_err.et:krb5:KRB5_KT_IOERR */
+ N_("Cannot find ticket for requested realm"), /* krb5_err.et:krb5:KRB5_NO_TKT_IN_RLM */
+ N_("DES key has bad parity"), /* krb5_err.et:krb5:KRB5DES_BAD_KEYPAR */
+ N_("DES key is a weak key"), /* krb5_err.et:krb5:KRB5DES_WEAK_KEY */
+ N_("Bad encryption type"), /* krb5_err.et:krb5:KRB5_BAD_ENCTYPE */
+ N_("Key size is incompatible with encryption type"), /* krb5_err.et:krb5:KRB5_BAD_KEYSIZE */
+ N_("Message size is incompatible with encryption type"), /* krb5_err.et:krb5:KRB5_BAD_MSIZE */
+ N_("Credentials cache type is already registered."), /* krb5_err.et:krb5:KRB5_CC_TYPE_EXISTS */
+ N_("Key table type is already registered."), /* krb5_err.et:krb5:KRB5_KT_TYPE_EXISTS */
+ N_("Credentials cache I/O operation failed XXX"), /* krb5_err.et:krb5:KRB5_CC_IO */
+ N_("Credentials cache permissions incorrect"), /* krb5_err.et:krb5:KRB5_FCC_PERM */
+ N_("No credentials cache found"), /* krb5_err.et:krb5:KRB5_FCC_NOFILE */
+ N_("Internal credentials cache error"), /* krb5_err.et:krb5:KRB5_FCC_INTERNAL */
+ N_("Error writing to credentials cache"), /* krb5_err.et:krb5:KRB5_CC_WRITE */
+ N_("No more memory to allocate (in credentials cache code)"), /* krb5_err.et:krb5:KRB5_CC_NOMEM */
+ N_("Bad format in credentials cache"), /* krb5_err.et:krb5:KRB5_CC_FORMAT */
+ N_("No credentials found with supported encryption types"), /* krb5_err.et:krb5:KRB5_CC_NOT_KTYPE */
+ N_("Invalid KDC option combination (library internal error)"), /* krb5_err.et:krb5:KRB5_INVALID_FLAGS */
+ N_("Request missing second ticket"), /* krb5_err.et:krb5:KRB5_NO_2ND_TKT */
+ N_("No credentials supplied to library routine"), /* krb5_err.et:krb5:KRB5_NOCREDS_SUPPLIED */
+ N_("Bad sendauth version was sent"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADAUTHVERS */
+ N_("Bad application version was sent (via sendauth)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADAPPLVERS */
+ N_("Bad response (during sendauth exchange)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_BADRESPONSE */
+ N_("Server rejected authentication (during sendauth exchange)"), /* krb5_err.et:krb5:KRB5_SENDAUTH_REJECTED */
+ N_("Unsupported preauthentication type"), /* krb5_err.et:krb5:KRB5_PREAUTH_BAD_TYPE */
+ N_("Required preauthentication key not supplied"), /* krb5_err.et:krb5:KRB5_PREAUTH_NO_KEY */
+ N_("Generic preauthentication failure"), /* krb5_err.et:krb5:KRB5_PREAUTH_FAILED */
+ N_("Unsupported replay cache format version number"), /* krb5_err.et:krb5:KRB5_RCACHE_BADVNO */
+ N_("Unsupported credentials cache format version number"), /* krb5_err.et:krb5:KRB5_CCACHE_BADVNO */
+ N_("Unsupported key table format version number"), /* krb5_err.et:krb5:KRB5_KEYTAB_BADVNO */
+ N_("Program lacks support for address type"), /* krb5_err.et:krb5:KRB5_PROG_ATYPE_NOSUPP */
+ N_("Message replay detection requires rcache parameter"), /* krb5_err.et:krb5:KRB5_RC_REQUIRED */
+ N_("Hostname cannot be canonicalized"), /* krb5_err.et:krb5:KRB5_ERR_BAD_HOSTNAME */
+ N_("Cannot determine realm for host"), /* krb5_err.et:krb5:KRB5_ERR_HOST_REALM_UNKNOWN */
+ N_("Conversion to service principal undefined for name type"), /* krb5_err.et:krb5:KRB5_SNAME_UNSUPP_NAMETYPE */
+ N_("Initial Ticket response appears to be Version 4 error"), /* krb5_err.et:krb5:KRB5KRB_AP_ERR_V4_REPLY */
+ N_("Cannot resolve network address for KDC in requested realm"), /* krb5_err.et:krb5:KRB5_REALM_CANT_RESOLVE */
+ N_("Requesting ticket can't get forwardable tickets"), /* krb5_err.et:krb5:KRB5_TKT_NOT_FORWARDABLE */
+ N_("Bad principal name while trying to forward credentials"), /* krb5_err.et:krb5:KRB5_FWD_BAD_PRINCIPAL */
+ N_("Looping detected inside krb5_get_in_tkt"), /* krb5_err.et:krb5:KRB5_GET_IN_TKT_LOOP */
+ N_("Configuration file does not specify default realm"), /* krb5_err.et:krb5:KRB5_CONFIG_NODEFREALM */
+ N_("Bad SAM flags in obtain_sam_padata"), /* krb5_err.et:krb5:KRB5_SAM_UNSUPPORTED */
+ N_("Invalid encryption type in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_INVALID_ETYPE */
+ N_("Missing checksum in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_NO_CHECKSUM */
+ N_("Bad checksum in SAM challenge"), /* krb5_err.et:krb5:KRB5_SAM_BAD_CHECKSUM */
+ N_("Keytab name too long"), /* krb5_err.et:krb5:KRB5_KT_NAME_TOOLONG */
+ N_("Key version number for principal in key table is incorrect"), /* krb5_err.et:krb5:KRB5_KT_KVNONOTFOUND */
+ N_("This application has expired"), /* krb5_err.et:krb5:KRB5_APPL_EXPIRED */
+ N_("This Krb5 library has expired"), /* krb5_err.et:krb5:KRB5_LIB_EXPIRED */
+ N_("New password cannot be zero length"), /* krb5_err.et:krb5:KRB5_CHPW_PWDNULL */
+ N_("Password change failed"), /* krb5_err.et:krb5:KRB5_CHPW_FAIL */
+ N_("Bad format in keytab"), /* krb5_err.et:krb5:KRB5_KT_FORMAT */
+ N_("Encryption type not permitted"), /* krb5_err.et:krb5:KRB5_NOPERM_ETYPE */
+ N_("No supported encryption types (config file error?)"), /* krb5_err.et:krb5:KRB5_CONFIG_ETYPE_NOSUPP */
+ N_("Program called an obsolete, deleted function"), /* krb5_err.et:krb5:KRB5_OBSOLETE_FN */
+ N_("unknown getaddrinfo failure"), /* krb5_err.et:krb5:KRB5_EAI_FAIL */
+ N_("no data available for host/domain name"), /* krb5_err.et:krb5:KRB5_EAI_NODATA */
+ N_("host/domain name not found"), /* krb5_err.et:krb5:KRB5_EAI_NONAME */
+ N_("service name unknown"), /* krb5_err.et:krb5:KRB5_EAI_SERVICE */
+ N_("Cannot determine realm for numeric host address"), /* krb5_err.et:krb5:KRB5_ERR_NUMERIC_REALM */
+ N_("Invalid key generation parameters from KDC"), /* krb5_err.et:krb5:KRB5_ERR_BAD_S2K_PARAMS */
+ N_("service not available"), /* krb5_err.et:krb5:KRB5_ERR_NO_SERVICE */
+ N_("Ccache function not supported: read-only ccache type"), /* krb5_err.et:krb5:KRB5_CC_READONLY */
+ N_("Ccache function not supported: not implemented"), /* krb5_err.et:krb5:KRB5_CC_NOSUPP */
+ N_("ASN.1 failed call to system time library"), /* asn1_err.et:asn1:ASN1_BAD_TIMEFORMAT */
+ N_("ASN.1 structure is missing a required field"), /* asn1_err.et:asn1:ASN1_MISSING_FIELD */
+ N_("ASN.1 unexpected field number"), /* asn1_err.et:asn1:ASN1_MISPLACED_FIELD */
+ N_("ASN.1 type numbers are inconsistent"), /* asn1_err.et:asn1:ASN1_TYPE_MISMATCH */
+ N_("ASN.1 value too large"), /* asn1_err.et:asn1:ASN1_OVERFLOW */
+ N_("ASN.1 encoding ended unexpectedly"), /* asn1_err.et:asn1:ASN1_OVERRUN */
+ N_("ASN.1 identifier doesn't match expected value"), /* asn1_err.et:asn1:ASN1_BAD_ID */
+ N_("ASN.1 length doesn't match expected value"), /* asn1_err.et:asn1:ASN1_BAD_LENGTH */
+ N_("ASN.1 badly-formatted encoding"), /* asn1_err.et:asn1:ASN1_BAD_FORMAT */
+ N_("ASN.1 parse error"), /* asn1_err.et:asn1:ASN1_PARSE_ERROR */
+ N_("ASN.1 bad return from gmtime"), /* asn1_err.et:asn1:ASN1_BAD_GMTIME */
+ N_("ASN.1 non-constructed indefinite encoding"), /* asn1_err.et:asn1:ASN1_MISMATCH_INDEF */
+ N_("ASN.1 missing expected EOC"), /* asn1_err.et:asn1:ASN1_MISSING_EOC */
+ N_("Kerberos V5 magic number table"), /* kv5m_err.et:kv5m:KV5M_NONE */
+ N_("Bad magic number for krb5_principal structure"), /* kv5m_err.et:kv5m:KV5M_PRINCIPAL */
+ N_("Bad magic number for krb5_data structure"), /* kv5m_err.et:kv5m:KV5M_DATA */
+ N_("Bad magic number for krb5_keyblock structure"), /* kv5m_err.et:kv5m:KV5M_KEYBLOCK */
+ N_("Bad magic number for krb5_checksum structure"), /* kv5m_err.et:kv5m:KV5M_CHECKSUM */
+ N_("Bad magic number for krb5_encrypt_block structure"), /* kv5m_err.et:kv5m:KV5M_ENCRYPT_BLOCK */
+ N_("Bad magic number for krb5_enc_data structure"), /* kv5m_err.et:kv5m:KV5M_ENC_DATA */
+ N_("Bad magic number for krb5_cryptosystem_entry structure"), /* kv5m_err.et:kv5m:KV5M_CRYPTOSYSTEM_ENTRY */
+ N_("Bad magic number for krb5_cs_table_entry structure"), /* kv5m_err.et:kv5m:KV5M_CS_TABLE_ENTRY */
+ N_("Bad magic number for krb5_checksum_entry structure"), /* kv5m_err.et:kv5m:KV5M_CHECKSUM_ENTRY */
+ N_("Bad magic number for krb5_authdata structure"), /* kv5m_err.et:kv5m:KV5M_AUTHDATA */
+ N_("Bad magic number for krb5_transited structure"), /* kv5m_err.et:kv5m:KV5M_TRANSITED */
+ N_("Bad magic number for krb5_enc_tkt_part structure"), /* kv5m_err.et:kv5m:KV5M_ENC_TKT_PART */
+ N_("Bad magic number for krb5_ticket structure"), /* kv5m_err.et:kv5m:KV5M_TICKET */
+ N_("Bad magic number for krb5_authenticator structure"), /* kv5m_err.et:kv5m:KV5M_AUTHENTICATOR */
+ N_("Bad magic number for krb5_tkt_authent structure"), /* kv5m_err.et:kv5m:KV5M_TKT_AUTHENT */
+ N_("Bad magic number for krb5_creds structure"), /* kv5m_err.et:kv5m:KV5M_CREDS */
+ N_("Bad magic number for krb5_last_req_entry structure"), /* kv5m_err.et:kv5m:KV5M_LAST_REQ_ENTRY */
+ N_("Bad magic number for krb5_pa_data structure"), /* kv5m_err.et:kv5m:KV5M_PA_DATA */
+ N_("Bad magic number for krb5_kdc_req structure"), /* kv5m_err.et:kv5m:KV5M_KDC_REQ */
+ N_("Bad magic number for krb5_enc_kdc_rep_part structure"), /* kv5m_err.et:kv5m:KV5M_ENC_KDC_REP_PART */
+ N_("Bad magic number for krb5_kdc_rep structure"), /* kv5m_err.et:kv5m:KV5M_KDC_REP */
+ N_("Bad magic number for krb5_error structure"), /* kv5m_err.et:kv5m:KV5M_ERROR */
+ N_("Bad magic number for krb5_ap_req structure"), /* kv5m_err.et:kv5m:KV5M_AP_REQ */
+ N_("Bad magic number for krb5_ap_rep structure"), /* kv5m_err.et:kv5m:KV5M_AP_REP */
+ N_("Bad magic number for krb5_ap_rep_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_AP_REP_ENC_PART */
+ N_("Bad magic number for krb5_response structure"), /* kv5m_err.et:kv5m:KV5M_RESPONSE */
+ N_("Bad magic number for krb5_safe structure"), /* kv5m_err.et:kv5m:KV5M_SAFE */
+ N_("Bad magic number for krb5_priv structure"), /* kv5m_err.et:kv5m:KV5M_PRIV */
+ N_("Bad magic number for krb5_priv_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_PRIV_ENC_PART */
+ N_("Bad magic number for krb5_cred structure"), /* kv5m_err.et:kv5m:KV5M_CRED */
+ N_("Bad magic number for krb5_cred_info structure"), /* kv5m_err.et:kv5m:KV5M_CRED_INFO */
+ N_("Bad magic number for krb5_cred_enc_part structure"), /* kv5m_err.et:kv5m:KV5M_CRED_ENC_PART */
+ N_("Bad magic number for krb5_pwd_data structure"), /* kv5m_err.et:kv5m:KV5M_PWD_DATA */
+ N_("Bad magic number for krb5_address structure"), /* kv5m_err.et:kv5m:KV5M_ADDRESS */
+ N_("Bad magic number for krb5_keytab_entry structure"), /* kv5m_err.et:kv5m:KV5M_KEYTAB_ENTRY */
+ N_("Bad magic number for krb5_context structure"), /* kv5m_err.et:kv5m:KV5M_CONTEXT */
+ N_("Bad magic number for krb5_os_context structure"), /* kv5m_err.et:kv5m:KV5M_OS_CONTEXT */
+ N_("Bad magic number for krb5_alt_method structure"), /* kv5m_err.et:kv5m:KV5M_ALT_METHOD */
+ N_("Bad magic number for krb5_etype_info_entry structure"), /* kv5m_err.et:kv5m:KV5M_ETYPE_INFO_ENTRY */
+ N_("Bad magic number for krb5_db_context structure"), /* kv5m_err.et:kv5m:KV5M_DB_CONTEXT */
+ N_("Bad magic number for krb5_auth_context structure"), /* kv5m_err.et:kv5m:KV5M_AUTH_CONTEXT */
+ N_("Bad magic number for krb5_keytab structure"), /* kv5m_err.et:kv5m:KV5M_KEYTAB */
+ N_("Bad magic number for krb5_rcache structure"), /* kv5m_err.et:kv5m:KV5M_RCACHE */
+ N_("Bad magic number for krb5_ccache structure"), /* kv5m_err.et:kv5m:KV5M_CCACHE */
+ N_("Bad magic number for krb5_preauth_ops"), /* kv5m_err.et:kv5m:KV5M_PREAUTH_OPS */
+ N_("Bad magic number for krb5_sam_challenge"), /* kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE */
+ N_("Bad magic number for krb5_sam_challenge_2"), /* kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE_2 */
+ N_("Bad magic number for krb5_sam_key"), /* kv5m_err.et:kv5m:KV5M_SAM_KEY */
+ N_("Bad magic number for krb5_enc_sam_response_enc"), /* kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC */
+ N_("Bad magic number for krb5_enc_sam_response_enc"), /* kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC_2 */
+ N_("Bad magic number for krb5_sam_response"), /* kv5m_err.et:kv5m:KV5M_SAM_RESPONSE */
+ N_("Bad magic number for krb5_sam_response 2"), /* kv5m_err.et:kv5m:KV5M_SAM_RESPONSE_2 */
+ N_("Bad magic number for krb5_predicted_sam_response"), /* kv5m_err.et:kv5m:KV5M_PREDICTED_SAM_RESPONSE */
+ N_("Bad magic number for passwd_phrase_element"), /* kv5m_err.et:kv5m:KV5M_PASSWD_PHRASE_ELEMENT */
+ N_("Bad magic number for GSSAPI OID"), /* kv5m_err.et:kv5m:KV5M_GSS_OID */
+ N_("Bad magic number for GSSAPI QUEUE"), /* kv5m_err.et:kv5m:KV5M_GSS_QUEUE */
+ N_("$Id: dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kdb5_err.et:kdb5:KRB5_KDB_RCSID */
+ N_("Entry already exists in database"), /* kdb5_err.et:kdb5:KRB5_KDB_INUSE */
+ N_("Database store error"), /* kdb5_err.et:kdb5:KRB5_KDB_UK_SERROR */
+ N_("Database read error"), /* kdb5_err.et:kdb5:KRB5_KDB_UK_RERROR */
+ N_("Insufficient access to perform requested operation"), /* kdb5_err.et:kdb5:KRB5_KDB_UNAUTH */
+ N_("No such entry in the database"), /* kdb5_err.et:kdb5:KRB5_KDB_NOENTRY */
+ N_("Illegal use of wildcard"), /* kdb5_err.et:kdb5:KRB5_KDB_ILL_WILDCARD */
+ N_("Database is locked or in use--try again later"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_INUSE */
+ N_("Database was modified during read"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_CHANGED */
+ N_("Database record is incomplete or corrupted"), /* kdb5_err.et:kdb5:KRB5_KDB_TRUNCATED_RECORD */
+ N_("Attempt to lock database twice"), /* kdb5_err.et:kdb5:KRB5_KDB_RECURSIVELOCK */
+ N_("Attempt to unlock database when not locked"), /* kdb5_err.et:kdb5:KRB5_KDB_NOTLOCKED */
+ N_("Invalid kdb lock mode"), /* kdb5_err.et:kdb5:KRB5_KDB_BADLOCKMODE */
+ N_("Database has not been initialized"), /* kdb5_err.et:kdb5:KRB5_KDB_DBNOTINITED */
+ N_("Database has already been initialized"), /* kdb5_err.et:kdb5:KRB5_KDB_DBINITED */
+ N_("Bad direction for converting keys"), /* kdb5_err.et:kdb5:KRB5_KDB_ILLDIRECTION */
+ N_("Cannot find master key record in database"), /* kdb5_err.et:kdb5:KRB5_KDB_NOMASTERKEY */
+ N_("Master key does not match database"), /* kdb5_err.et:kdb5:KRB5_KDB_BADMASTERKEY */
+ N_("Key size in database is invalid"), /* kdb5_err.et:kdb5:KRB5_KDB_INVALIDKEYSIZE */
+ N_("Cannot find/read stored master key"), /* kdb5_err.et:kdb5:KRB5_KDB_CANTREAD_STORED */
+ N_("Stored master key is corrupted"), /* kdb5_err.et:kdb5:KRB5_KDB_BADSTORED_MKEY */
+ N_("Insufficient access to lock database"), /* kdb5_err.et:kdb5:KRB5_KDB_CANTLOCK_DB */
+ N_("Database format error"), /* kdb5_err.et:kdb5:KRB5_KDB_DB_CORRUPT */
+ N_("Unsupported version in database entry"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_VERSION */
+ N_("Unsupported salt type"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_SALTTYPE */
+ N_("Unsupported encryption type"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_ENCTYPE */
+ N_("Bad database creation flags"), /* kdb5_err.et:kdb5:KRB5_KDB_BAD_CREATEFLAGS */
+ N_("No matching key in entry having a permitted enctype"), /* kdb5_err.et:kdb5:KRB5_KDB_NO_PERMITTED_KEY */
+ N_("No matching key in entry"), /* kdb5_err.et:kdb5:KRB5_KDB_NO_MATCHING_KEY */
+ N_("No Error"), /* adb_err.et:adb:OSA_ADB_NOERR */
+ N_("Principal or policy already exists"), /* adb_err.et:adb:OSA_ADB_DUP */
+ N_("Principal or policy does not exist"), /* adb_err.et:adb:OSA_ADB_NOENT */
+ N_("Database not initialized"), /* adb_err.et:adb:OSA_ADB_DBINIT */
+ N_("Invalid policy name"), /* adb_err.et:adb:OSA_ADB_BAD_POLICY */
+ N_("Invalid principal name"), /* adb_err.et:adb:OSA_ADB_BAD_PRINC */
+ N_("Database inconsistency detected"), /* adb_err.et:adb:OSA_ADB_BAD_DB */
+ N_("XDR encoding error"), /* adb_err.et:adb:OSA_ADB_XDR_FAILURE */
+ N_("Failure!"), /* adb_err.et:adb:OSA_ADB_FAILURE */
+ N_("Bad lock mode"), /* adb_err.et:adb:OSA_ADB_BADLOCKMODE */
+ N_("Cannot lock database"), /* adb_err.et:adb:OSA_ADB_CANTLOCK_DB */
+ N_("Database not locked"), /* adb_err.et:adb:OSA_ADB_NOTLOCKED */
+ N_("KADM5 administration database lock file missing"), /* adb_err.et:adb:OSA_ADB_NOLOCKFILE */
+ N_("Insufficient permission to lock file"), /* adb_err.et:adb:OSA_ADB_NOEXCL_PERM */
+ N_("Operation failed for unspecified reason"), /* kadm_err.et:ovk:KADM5_FAILURE */
+ N_("Operation requires ``get'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_GET */
+ N_("Operation requires ``add'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_ADD */
+ N_("Operation requires ``modify'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_MODIFY */
+ N_("Operation requires ``delete'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_DELETE */
+ N_("Insufficient authorization for operation"), /* kadm_err.et:ovk:KADM5_AUTH_INSUFFICIENT */
+ N_("Database inconsistency detected"), /* kadm_err.et:ovk:KADM5_BAD_DB */
+ N_("Principal or policy already exists"), /* kadm_err.et:ovk:KADM5_DUP */
+ N_("Communication failure with server"), /* kadm_err.et:ovk:KADM5_RPC_ERROR */
+ N_("No administration server found for realm"), /* kadm_err.et:ovk:KADM5_NO_SRV */
+ N_("Password history principal key version mismatch"), /* kadm_err.et:ovk:KADM5_BAD_HIST_KEY */
+ N_("Connection to server not initialized"), /* kadm_err.et:ovk:KADM5_NOT_INIT */
+ N_("Principal does not exist"), /* kadm_err.et:ovk:KADM5_UNK_PRINC */
+ N_("Policy does not exist"), /* kadm_err.et:ovk:KADM5_UNK_POLICY */
+ N_("Invalid field mask for operation"), /* kadm_err.et:ovk:KADM5_BAD_MASK */
+ N_("Invalid number of character classes"), /* kadm_err.et:ovk:KADM5_BAD_CLASS */
+ N_("Invalid password length"), /* kadm_err.et:ovk:KADM5_BAD_LENGTH */
+ N_("Illegal policy name"), /* kadm_err.et:ovk:KADM5_BAD_POLICY */
+ N_("Illegal principal name"), /* kadm_err.et:ovk:KADM5_BAD_PRINCIPAL */
+ N_("Invalid auxillary attributes"), /* kadm_err.et:ovk:KADM5_BAD_AUX_ATTR */
+ N_("Invalid password history count"), /* kadm_err.et:ovk:KADM5_BAD_HISTORY */
+ N_("Password minimum life is greater than password maximum life"), /* kadm_err.et:ovk:KADM5_BAD_MIN_PASS_LIFE */
+ N_("Password is too short"), /* kadm_err.et:ovk:KADM5_PASS_Q_TOOSHORT */
+ N_("Password does not contain enough character classes"), /* kadm_err.et:ovk:KADM5_PASS_Q_CLASS */
+ N_("Password is in the password dictionary"), /* kadm_err.et:ovk:KADM5_PASS_Q_DICT */
+ N_("Cannot reuse password"), /* kadm_err.et:ovk:KADM5_PASS_REUSE */
+ N_("Current password's minimum life has not expired"), /* kadm_err.et:ovk:KADM5_PASS_TOOSOON */
+ N_("Policy is in use"), /* kadm_err.et:ovk:KADM5_POLICY_REF */
+ N_("Connection to server already initialized"), /* kadm_err.et:ovk:KADM5_INIT */
+ N_("Incorrect password"), /* kadm_err.et:ovk:KADM5_BAD_PASSWORD */
+ N_("Cannot change protected principal"), /* kadm_err.et:ovk:KADM5_PROTECT_PRINCIPAL */
+ N_("Programmer error! Bad Admin server handle"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_HANDLE */
+ N_("Programmer error! Bad API structure version"), /* kadm_err.et:ovk:KADM5_BAD_STRUCT_VERSION */
+ N_("API structure version specified by application is no longer supported (to fix, recompile application against current KADM5 API header files and libraries)"), /* kadm_err.et:ovk:KADM5_OLD_STRUCT_VERSION */
+ N_("API structure version specified by application is unknown to libraries (to fix, obtain current KADM5 API header files and libraries and recompile application)"), /* kadm_err.et:ovk:KADM5_NEW_STRUCT_VERSION */
+ N_("Programmer error! Bad API version"), /* kadm_err.et:ovk:KADM5_BAD_API_VERSION */
+ N_("API version specified by application is no longer supported by libraries (to fix, update application to adhere to current API version and recompile)"), /* kadm_err.et:ovk:KADM5_OLD_LIB_API_VERSION */
+ N_("API version specified by application is no longer supported by server (to fix, update application to adhere to current API version and recompile)"), /* kadm_err.et:ovk:KADM5_OLD_SERVER_API_VERSION */
+ N_("API version specified by application is unknown to libraries (to fix, obtain current KADM5 API header files and libraries and recompile application)"), /* kadm_err.et:ovk:KADM5_NEW_LIB_API_VERSION */
+ N_("API version specified by application is unknown to server (to fix, obtain and install newest KADM5 Admin Server)"), /* kadm_err.et:ovk:KADM5_NEW_SERVER_API_VERSION */
+ N_("Database error! Required KADM5 principal missing"), /* kadm_err.et:ovk:KADM5_SECURE_PRINC_MISSING */
+ N_("The salt type of the specified principal does not support renaming"), /* kadm_err.et:ovk:KADM5_NO_RENAME_SALT */
+ N_("Illegal configuration parameter for remote KADM5 client"), /* kadm_err.et:ovk:KADM5_BAD_CLIENT_PARAMS */
+ N_("Illegal configuration parameter for local KADM5 client"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_PARAMS */
+ N_("Operation requires ``list'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_LIST */
+ N_("Operation requires ``change-password'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_CHANGEPW */
+ N_("GSS-API (or Kerberos) error"), /* kadm_err.et:ovk:KADM5_GSS_ERROR */
+ N_("Programmer error! Illegal tagged data list type"), /* kadm_err.et:ovk:KADM5_BAD_TL_TYPE */
+ N_("Required parameters in kdc.conf missing"), /* kadm_err.et:ovk:KADM5_MISSING_CONF_PARAMS */
+ N_("Bad krb5 admin server hostname"), /* kadm_err.et:ovk:KADM5_BAD_SERVER_NAME */
+ N_("Operation requires ``set-key'' privilege"), /* kadm_err.et:ovk:KADM5_AUTH_SETKEY */
+ N_("Multiple values for single or folded enctype"), /* kadm_err.et:ovk:KADM5_SETKEY_DUP_ENCTYPES */
+ N_("Invalid enctype for setv4key"), /* kadm_err.et:ovk:KADM5_SETV4KEY_INVAL_ENCTYPE */
+ N_("Mismatched enctypes for setkey3"), /* kadm_err.et:ovk:KADM5_SETKEY3_ETYPE_MISMATCH */
+ N_("Missing parameters in krb5.conf required for kadmin client"), /* kadm_err.et:ovk:KADM5_MISSING_KRB5_CONF_PARAMS */
+ N_("while getting policy info."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_GET_POLICY_INFO */
+ N_("while getting principal info."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_GET_PRINC_INFO */
+ N_("New passwords do not match - password not changed.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_MISMATCH */
+ N_("New password"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_PROMPT */
+ N_("New password (again)"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT */
+ N_("You must type a password. Passwords must be at least one character long.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NO_PASSWORD_READ */
+ N_("yet no policy set! Contact your system security administrator."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_NO_POLICY_YET_Q_ERROR */
+ N_("Password changed.\n"), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_CHANGED */
+ N_("New password was found in a dictionary of possible passwords and\n\
+therefore may be easily guessed. Please choose another password.\n\
+See the ovpasswd man page for help in choosing a good password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_IN_DICTIONARY */
+ N_("Password not changed."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_NOT_CHANGED */
+ N_("New password is too short.\n\
+Please choose a password which is at least %d characters long."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_TOO_SHORT */
+ N_("New password does not have enough character classes.\n\
+The character classes are:\n\
+ - lower-case letters,\n\
+ - upper-case letters,\n\
+ - digits,\n\
+ - punctuation, and\n\
+ - all other characters (e.g., control characters).\n\
+Please choose a password with at least %d character classes."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_TOO_FEW_CLASSES */
+ N_("Password cannot be changed because it was changed too recently.\n\
+Please wait until %s before you change it.\n\
+If you need to change your password before then, contact your system\n\
+security administrator."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_TOO_SOON */
+ N_("New password was used previously. Please choose a different password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_PASSWORD_REUSE */
+ N_("while trying to change password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_WHILE_TRYING_TO_CHANGE */
+ N_("while reading new password."), /* chpass_util_strings.et:ovku:CHPASS_UTIL_WHILE_READING_PASSWORD */
+ N_("$Header: /cvs/gnome/krb5-auth-dialog/src/dummy-strings.c,v 1.2 2005/10/31 21:55:46 caillon Exp $"), /* kadm_err.et:kadm:KADM_RCSID */
+ N_("Cannot fetch local realm"), /* kadm_err.et:kadm:KADM_NO_REALM */
+ N_("Unable to fetch credentials"), /* kadm_err.et:kadm:KADM_NO_CRED */
+ N_("Bad key supplied"), /* kadm_err.et:kadm:KADM_BAD_KEY */
+ N_("Can't encrypt data"), /* kadm_err.et:kadm:KADM_NO_ENCRYPT */
+ N_("Cannot encode/decode authentication info"), /* kadm_err.et:kadm:KADM_NO_AUTH */
+ N_("Principal attemping change is in wrong realm"), /* kadm_err.et:kadm:KADM_WRONG_REALM */
+ N_("Packet is too large"), /* kadm_err.et:kadm:KADM_NO_ROOM */
+ N_("Version number is incorrect"), /* kadm_err.et:kadm:KADM_BAD_VER */
+ N_("Checksum does not match"), /* kadm_err.et:kadm:KADM_BAD_CHK */
+ N_("Unsealing private data failed"), /* kadm_err.et:kadm:KADM_NO_READ */
+ N_("Unsupported operation"), /* kadm_err.et:kadm:KADM_NO_OPCODE */
+ N_("Could not find administrating host"), /* kadm_err.et:kadm:KADM_NO_HOST */
+ N_("Administrating host name is unknown"), /* kadm_err.et:kadm:KADM_UNK_HOST */
+ N_("Could not find service name in services database"), /* kadm_err.et:kadm:KADM_NO_SERV */
+ N_("Could not create socket"), /* kadm_err.et:kadm:KADM_NO_SOCK */
+ N_("Could not connect to server"), /* kadm_err.et:kadm:KADM_NO_CONN */
+ N_("Could not fetch local socket address"), /* kadm_err.et:kadm:KADM_NO_HERE */
+ N_("Could not fetch master key"), /* kadm_err.et:kadm:KADM_NO_MAST */
+ N_("Could not verify master key"), /* kadm_err.et:kadm:KADM_NO_VERI */
+ N_("Entry already exists in database"), /* kadm_err.et:kadm:KADM_INUSE */
+ N_("Database store error"), /* kadm_err.et:kadm:KADM_UK_SERROR */
+ N_("Database read error"), /* kadm_err.et:kadm:KADM_UK_RERROR */
+ N_("Insufficient access to perform requested operation"), /* kadm_err.et:kadm:KADM_UNAUTH */
+ N_("Data is available for return to client"), /* kadm_err.et:kadm:KADM_DATA */
+ N_("No such entry in the database"), /* kadm_err.et:kadm:KADM_NOENTRY */
+ N_("Memory exhausted"), /* kadm_err.et:kadm:KADM_NOMEM */
+ N_("Could not fetch system hostname"), /* kadm_err.et:kadm:KADM_NO_HOSTNAME */
+ N_("Could not bind port"), /* kadm_err.et:kadm:KADM_NO_BIND */
+ N_("Length mismatch problem"), /* kadm_err.et:kadm:KADM_LENGTH_ERROR */
+ N_("Illegal use of wildcard"), /* kadm_err.et:kadm:KADM_ILL_WILDCARD */
+ N_("Database locked or in use"), /* kadm_err.et:kadm:KADM_DB_INUSE */
+ N_("Insecure password rejected"), /* kadm_err.et:kadm:KADM_INSECURE_PW */
+ N_("Cleartext password and DES key did not match"), /* kadm_err.et:kadm:KADM_PW_MISMATCH */
+ N_("Invalid principal for change srvtab request"), /* kadm_err.et:kadm:KADM_NOT_SERV_PRINC */
+ N_("Realm name too long"), /* kadm_err.et:kadm:KADM_REALM_TOO_LONG */
+ N_("Kerberos successful"), /* krb_err.et:krb:KRBET_KSUCCESS */
+ N_("Kerberos principal expired"), /* krb_err.et:krb:KRBET_KDC_NAME_EXP */
+ N_("Kerberos service expired"), /* krb_err.et:krb:KRBET_KDC_SERVICE_EXP */
+ N_("Kerberos auth expired"), /* krb_err.et:krb:KRBET_KDC_AUTH_EXP */
+ N_("Unknown kerberos protocol version"), /* krb_err.et:krb:KRBET_KDC_PKT_VER */
+ N_("Incorrect kerberos master key version for principal"), /* krb_err.et:krb:KRBET_KDC_P_MKEY_VER */
+ N_("Incorrect kerberos master key version for service"), /* krb_err.et:krb:KRBET_KDC_S_MKEY_VER */
+ N_("Bad byte order (kerberos)"), /* krb_err.et:krb:KRBET_KDC_BYTE_ORDER */
+ N_("Kerberos principal unknown"), /* krb_err.et:krb:KRBET_KDC_PR_UNKNOWN */
+ N_("Kerberos principal not unique"), /* krb_err.et:krb:KRBET_KDC_PR_N_UNIQUE */
+ N_("Kerberos principal has null key"), /* krb_err.et:krb:KRBET_KDC_NULL_KEY */
+ N_("Reserved error message 11 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES11 */
+ N_("Reserved error message 12 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES12 */
+ N_("Reserved error message 13 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES13 */
+ N_("Reserved error message 14 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES14 */
+ N_("Reserved error message 15 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES15 */
+ N_("Reserved error message 16 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES16 */
+ N_("Reserved error message 17 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES17 */
+ N_("Reserved error message 18 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES18 */
+ N_("Reserved error message 19 (kerberos)"), /* krb_err.et:krb:KRBET_KRB_RES19 */
+ N_("Generic error from Kerberos KDC"), /* krb_err.et:krb:KRBET_KDC_GEN_ERR */
+ N_("Can't read Kerberos ticket file"), /* krb_err.et:krb:KRBET_GC_TKFIL */
+ N_("Can't find Kerberos ticket or TGT"), /* krb_err.et:krb:KRBET_GC_NOTKT */
+ N_("Reserved error message 23 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES23 */
+ N_("Reserved error message 24 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES24 */
+ N_("Reserved error message 25 (krb_get_cred)"), /* krb_err.et:krb:KRBET_KRB_RES25 */
+ N_("Kerberos TGT Expired"), /* krb_err.et:krb:KRBET_MK_AP_TGTEXP */
+ N_("Reserved error message 27 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES27 */
+ N_("Reserved error message 28 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES28 */
+ N_("Reserved error message 29 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES29 */
+ N_("Reserved error message 30 (krb_mk_req)"), /* krb_err.et:krb:KRBET_KRB_RES30 */
+ N_("Can't decode authenticator (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_UNDEC */
+ N_("Kerberos ticket expired (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_EXP */
+ N_("Kerberos ticket not yet valid (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_NYV */
+ N_("Repeated request (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_REPEAT */
+ N_("Kerberos ticket is for wrong server (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_NOT_US */
+ N_("Kerberos request inconsistent"), /* krb_err.et:krb:KRBET_RD_AP_INCON */
+ N_("Time is out of bounds (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_TIME */
+ N_("Incorrect net address (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_BADD */
+ N_("Kerberos protocol version mismatch (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_VERSION */
+ N_("Invalid msg type (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_MSG_TYPE */
+ N_("Message integrity error (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_MODIFIED */
+ N_("Message out of order (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_ORDER */
+ N_("Unauthorized request (krb_rd_req)"), /* krb_err.et:krb:KRBET_RD_AP_UNAUTHOR */
+ N_("Current password is null (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_NULL */
+ N_("Incorrect current password (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_BADPW */
+ N_("Protocol error (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_PROT */
+ N_("Error returned by KDC (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_KDCERR */
+ N_("Null Kerberos ticket returned by KDC (get_pw_tkt)"), /* krb_err.et:krb:KRBET_GT_PW_NULLTKT */
+ N_("Retry count exceeded (send_to_kdc)"), /* krb_err.et:krb:KRBET_SKDC_RETRY */
+ N_("Can't send request (send_to_kdc)"), /* krb_err.et:krb:KRBET_SKDC_CANT */
+ N_("Reserved error message 58 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES58 */
+ N_("Reserved error message 59 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES59 */
+ N_("Reserved error message 60 (send_to_kdc)"), /* krb_err.et:krb:KRBET_KRB_RES60 */
+ N_("Kerberos error: not all tickets returned"), /* krb_err.et:krb:KRBET_INTK_W_NOTALL */
+ N_("Incorrect password (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_BADPW */
+ N_("Protocol error (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_PROT */
+ N_("Other error (get_in_tkt)"), /* krb_err.et:krb:KRBET_INTK_ERR */
+ N_("Don't have Kerberos ticket-granting ticket (get_ad_tkt)"), /* krb_err.et:krb:KRBET_AD_NOTGT */
+ N_("You have no tickets cached"), /* krb_err.et:krb:KRBET_NO_TKT_FIL */
+ N_("Couldn't access ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_ACC */
+ N_("Couldn't lock ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_LCK */
+ N_("Bad ticket file format (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_FMT */
+ N_("tf_init not called before reading from ticket file (tf_util)"), /* krb_err.et:krb:KRBET_TKT_FIL_INI */
+ N_("Bad Kerberos name format (kname_parse)"), /* krb_err.et:krb:KRBET_KNAME_FMT */
+ N_("Generic kerberos error (kfailure)"), /* krb_err.et:krb:KRBET_KFAILURE */
+ N_("Principal in credential cache does not match desired name"), /* gssapi_err_krb5.et:k5g:KG_CCACHE_NOMATCH */
+ N_("No principal in keytab matches desired name"), /* gssapi_err_krb5.et:k5g:KG_KEYTAB_NOMATCH */
+ N_("Credential cache has no TGT"), /* gssapi_err_krb5.et:k5g:KG_TGT_MISSING */
+ N_("Authenticator has no subkey"), /* gssapi_err_krb5.et:k5g:KG_NO_SUBKEY */
+ N_("Context is already fully established"), /* gssapi_err_krb5.et:k5g:KG_CONTEXT_ESTABLISHED */
+ N_("Unknown signature type in token"), /* gssapi_err_krb5.et:k5g:KG_BAD_SIGN_TYPE */
+ N_("Invalid field length in token"), /* gssapi_err_krb5.et:k5g:KG_BAD_LENGTH */
+ N_("Attempt to use incomplete security context"), /* gssapi_err_krb5.et:k5g:KG_CTX_INCOMPLETE */
+ N_("Bad magic number for krb5_gss_ctx_id_t"), /* gssapi_err_krb5.et:k5g:KG_CONTEXT */
+ N_("Bad magic number for krb5_gss_cred_id_t"), /* gssapi_err_krb5.et:k5g:KG_CRED */
+ N_("Bad magic number for krb5_gss_enc_desc"), /* gssapi_err_krb5.et:k5g:KG_ENC_DESC */
+ N_("Sequence number in token is corrupt"), /* gssapi_err_krb5.et:k5g:KG_BAD_SEQ */
+ N_("Credential cache is empty"), /* gssapi_err_krb5.et:k5g:KG_EMPTY_CCACHE */
+ N_("Acceptor and Initiator share no checksum types"), /* gssapi_err_krb5.et:k5g:KG_NO_CTYPES */
+ N_("No @ in SERVICE-NAME name string"), /* gssapi_err_generic.et:ggss:G_BAD_SERVICE_NAME */
+ N_("STRING-UID-NAME contains nondigits"), /* gssapi_err_generic.et:ggss:G_BAD_STRING_UID */
+ N_("UID does not resolve to username"), /* gssapi_err_generic.et:ggss:G_NOUSER */
+ N_("Validation error"), /* gssapi_err_generic.et:ggss:G_VALIDATE_FAILED */
+ N_("Couldn't allocate gss_buffer_t data"), /* gssapi_err_generic.et:ggss:G_BUFFER_ALLOC */
+ N_("Message context invalid"), /* gssapi_err_generic.et:ggss:G_BAD_MSG_CTX */
+ N_("Buffer is the wrong size"), /* gssapi_err_generic.et:ggss:G_WRONG_SIZE */
+ N_("Credential usage type is unknown"), /* gssapi_err_generic.et:ggss:G_BAD_USAGE */
+ N_("Unknown quality of protection specified"), /* gssapi_err_generic.et:ggss:G_UNKNOWN_QOP */
+ N_("Local host name could not be determined"), /* gssapi_err_generic.et:ggss:G_NO_HOSTNAME */
+ N_("Hostname in SERVICE-NAME string could not be canonicalized"), /* gssapi_err_generic.et:ggss:G_BAD_HOSTNAME */
+ N_("Mechanism is incorrect"), /* gssapi_err_generic.et:ggss:G_WRONG_MECH */
+ N_("Token header is malformed or corrupt"), /* gssapi_err_generic.et:ggss:G_BAD_TOK_HEADER */
+ N_("Packet was replayed in wrong direction"), /* gssapi_err_generic.et:ggss:G_BAD_DIRECTION */
+ N_("Token is missing data"), /* gssapi_err_generic.et:ggss:G_TOK_TRUNC */
+ N_("Token was reflected"), /* gssapi_err_generic.et:ggss:G_REFLECT */
+ N_("Received token ID does not match expected token ID"), /* gssapi_err_generic.et:ggss:G_WRONG_TOKID */
+ NULL
+};
diff --git a/src/krb5-auth-dialog.1.in b/src/krb5-auth-dialog.1.in
new file mode 100644
index 0000000..7f83138
--- /dev/null
+++ b/src/krb5-auth-dialog.1.in
@@ -0,0 +1,37 @@
+.TH krb5-auth-dialog 2005/11/02 "GNOME" "System Administrator's Manual"
+
+.SH NAME
+krb5-auth-dialog \- Kerberos 5 credential checking
+
+.SH SYNOPSIS
+.B krb5-auth-dialog [--always|--auto]
+
+.SH DESCRIPTION
+The krb5-auth-dialog application will periodically check (every
+@check_interval@ seconds) if the user has Kerberos credentials, and if so, if
+they will expire soon (in less than @minimum_lifetime@ minutes). If it
+determines that this is the case, krb5-auth-dialog will attempt to obtain fresh
+credentials, prompting the user for whatever information is necessary.
+
+.SH ARGUMENTS
+
+.IP --always
+By default, krb5-auth-dialog will exit if it finds that the user has no
+Kerberos credentials. If this option is specified, then it will instead
+attempt to get credentials.
+
+.IP --auto
+Overrides the --always option, restoring the default behavior.
+
+.SH "SEE ALSO"
+.BR krb5.conf (5)
+
+.SH BUGS
+Probably, but let's hope not. If you find any, please file them in the
+bug database at http://bugzilla.gnome.org/ against the
+"krb5-auth-dialog" component.
+
+.SH AUTHORS
+Christopher Aillon <caillon@redhat.com>
+.br
+Jonathan Blandford <jrb@redhat.com>
diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c
new file mode 100644
index 0000000..81f4f38
--- /dev/null
+++ b/src/krb5-auth-dialog.c
@@ -0,0 +1,592 @@
+/*
+ * Copyright (C) 2004,2005 Red Hat, Inc.
+ * Authored by Christopher Aillon <caillon@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <gnome.h>
+#include <stdlib.h>
+#include <time.h>
+#include <krb5.h>
+#include <stdio.h>
+#include <sys/wait.h>
+#include <string.h>
+
+
+#ifdef ENABLE_NETWORK_MANAGER
+#include <libnm_glib.h>
+#endif
+
+static GladeXML *xml = NULL;
+static krb5_context kcontext;
+static krb5_principal kprincipal;
+static gboolean invalid_password;
+static gboolean always_run;
+static gint creds_expiry;
+
+static int renew_credentials ();
+static gboolean get_tgt_from_ccache (krb5_context context, krb5_creds *creds);
+
+static gchar* minutes_to_expiry_text (int minutes)
+{
+ gchar *expiry_text;
+ gchar *tmp;
+
+ if (minutes > 0)
+ expiry_text = g_strdup_printf (ngettext("Your credentials expire in %d minute",
+ "Your credentials expire in %d minutes",
+ minutes),
+ minutes);
+ else
+ {
+ expiry_text = g_strdup (_("Your credentials have expired"));
+ tmp = g_strdup_printf ("<span foreground=\"red\">%s</span>", expiry_text);
+ g_free (expiry_text);
+ expiry_text = tmp;
+ }
+
+ return expiry_text;
+}
+
+static gboolean
+krb5_auth_dialog_wrong_label_update_expiry (gpointer data)
+{
+ GtkWidget *label = GTK_WIDGET(data);
+ int minutes_left;
+ gchar *expiry_text;
+ gchar *expiry_markup;
+
+ g_return_val_if_fail (label != NULL, FALSE);
+
+ minutes_left = (creds_expiry - time(0)) / 60;
+
+ expiry_text = minutes_to_expiry_text (minutes_left);
+
+ expiry_markup = g_strdup_printf ("<span size=\"smaller\" style=\"italic\">%s</span>", expiry_text);
+ gtk_label_set_markup (GTK_LABEL (label), expiry_markup);
+ g_free (expiry_text);
+ g_free (expiry_markup);
+
+ return TRUE;
+}
+
+static void
+krb5_auth_dialog_setup (GtkWidget *dialog,
+ const gchar *krb5prompt,
+ gboolean hide_password)
+{
+ GtkWidget *entry;
+ GtkWidget *label;
+ GtkWidget *wrong_label;
+ gchar *wrong_text;
+ gchar *wrong_markup;
+ gchar *prompt;
+ int pw4len;
+
+ if (krb5prompt == NULL)
+ prompt = g_strdup (_("Please enter your Kerberos password."));
+ else
+ {
+ /* Kerberos's prompts are a mess, and basically impossible to
+ * translate. There's basically no way short of doing a lot of
+ * string parsing to translate them. The most common prompt is
+ * "Password for $uid:". We special case that one at least. We
+ * cannot do any of the fancier strings (like challenges),
+ * though. */
+ pw4len = strlen ("Password for ");
+ if (strncmp (krb5prompt, "Password for ", pw4len) == 0)
+ {
+ gchar *uid = (gchar *) (krb5prompt + pw4len);
+ prompt = g_strdup_printf (_("Please enter the password for '%s'"), uid);
+ }
+ else
+ prompt = g_strdup (krb5prompt);
+ }
+
+ /* Clear the password entry field */
+ entry = glade_xml_get_widget (xml, "krb5_entry");
+ gtk_entry_set_text (GTK_ENTRY (entry), "");
+ gtk_entry_set_visibility (GTK_ENTRY (entry), !hide_password);
+
+ /* Use the prompt label that krb5 provides us */
+ label = glade_xml_get_widget (xml, "krb5_message_label");
+ gtk_label_set_text (GTK_LABEL (label), prompt);
+
+ /* Add our extra message hints, if any */
+ wrong_label = glade_xml_get_widget (xml, "krb5_wrong_label");
+ wrong_text = NULL;
+
+ if (wrong_label)
+ {
+ if (invalid_password)
+ wrong_text = g_strdup (_("The password you entered is invalid"));
+ else
+ {
+ int minutes_left = (creds_expiry - time(0)) / 60;
+
+ wrong_text = minutes_to_expiry_text (minutes_left);
+ }
+ }
+
+ if (wrong_text)
+ {
+ wrong_markup = g_strdup_printf ("<span size=\"smaller\" style=\"italic\">%s</span>", wrong_text);
+ gtk_label_set_markup (GTK_LABEL (wrong_label), wrong_markup);
+ g_free(wrong_text);
+ g_free(wrong_markup);
+ }
+ else
+ gtk_label_set_text (GTK_LABEL (wrong_label), "");
+
+ g_free (prompt);
+}
+
+static krb5_error_code
+krb5_gtk_prompter (krb5_context ctx,
+ void *data,
+ const char *name,
+ const char *banner,
+ int num_prompts,
+ krb5_prompt prompts[])
+{
+ GtkWidget *dialog;
+ GtkWidget *wrong_label;
+ krb5_error_code errcode;
+ int i;
+
+ errcode = KRB5_LIBOS_CANTREADPWD;
+
+ dialog = glade_xml_get_widget (xml, "krb5_dialog");
+
+ for (i = 0; i < num_prompts; i++)
+ {
+ const gchar *password = NULL;
+ int password_len = 0;
+ int response;
+ guint32 source_id = 0;
+
+ GtkWidget *entry;
+
+ errcode = KRB5_LIBOS_CANTREADPWD;
+
+ entry = glade_xml_get_widget(xml, "krb5_entry");
+ krb5_auth_dialog_setup (dialog, (gchar *) prompts[i].prompt, prompts[i].hidden);
+
+ wrong_label = glade_xml_get_widget (xml, "krb5_wrong_label");
+ source_id = g_timeout_add (5000, (GSourceFunc)krb5_auth_dialog_wrong_label_update_expiry,
+ wrong_label);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ switch (response)
+ {
+ case GTK_RESPONSE_OK:
+ password = gtk_entry_get_text (GTK_ENTRY (entry));
+ password_len = strlen (password);
+ errcode = 0;
+ break;
+ case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_DELETE_EVENT:
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ g_source_remove (source_id);
+
+ prompts[i].reply->data = (char *) password;
+ prompts[i].reply->length = password_len;
+ }
+
+ /* Reset this, so we know the next time we get a TRUE value, it is accurate. */
+ gtk_widget_hide (dialog);
+ invalid_password = FALSE;
+
+ return errcode;
+}
+
+static gboolean is_online = TRUE;
+
+#ifdef ENABLE_NETWORK_MANAGER
+static void
+network_state_cb (libnm_glib_ctx *context,
+ gpointer data)
+{
+ gboolean *online = (gboolean*) data;
+
+ libnm_glib_state state;
+
+ state = libnm_glib_get_network_state (context);
+
+ switch (state)
+ {
+ case LIBNM_NO_DBUS:
+ case LIBNM_NO_NETWORKMANAGER:
+ case LIBNM_INVALID_CONTEXT:
+ /* do nothing */
+ break;
+ case LIBNM_NO_NETWORK_CONNECTION:
+ *online = FALSE;
+ break;
+ case LIBNM_ACTIVE_NETWORK_CONNECTION:
+ *online = TRUE;
+ break;
+ }
+}
+#endif
+
+static gboolean
+credentials_expiring_real (void)
+{
+ krb5_creds my_creds;
+ gboolean retval = FALSE;
+
+ if (!get_tgt_from_ccache (kcontext, &my_creds)) {
+ creds_expiry = 0;
+ return TRUE;
+ }
+
+ if (krb5_principal_compare (kcontext, my_creds.client, kprincipal)) {
+ krb5_free_principal(kcontext, kprincipal);
+ krb5_copy_principal(kcontext, my_creds.client, &kprincipal);
+ }
+ creds_expiry = my_creds.times.endtime;
+ if (time(NULL) + MINUTES_BEFORE_PROMPTING * 60 > my_creds.times.endtime)
+ retval = TRUE;
+
+ krb5_free_cred_contents(kcontext, &my_creds);
+
+ return retval;
+}
+
+static gboolean
+credentials_expiring (gpointer *data)
+{
+ if (credentials_expiring_real () && is_online)
+ renew_credentials ();
+
+ return TRUE;
+}
+
+#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_FORWARDABLE)
+static int
+get_cred_forwardable(krb5_creds *creds)
+{
+ return creds->ticket_flags & TKT_FLG_FORWARDABLE;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS_B_FORWARDABLE)
+static int
+get_cred_forwardable(krb5_creds *creds)
+{
+ return creds->flags.b.forwardable;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_FORWARDABLE)
+static int
+get_cred_forwardable(krb5_creds *creds)
+{
+ return creds->flags & KDC_OPT_FORWARDABLE;
+}
+#endif
+
+#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_RENEWABLE)
+static int
+get_cred_renewable(krb5_creds *creds)
+{
+ return creds->ticket_flags & TKT_FLG_RENEWABLE;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS_B_RENEWABLE)
+static int
+get_cred_renewable(krb5_creds *creds)
+{
+ return creds->flags.b.renewable;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_RENEWABLE)
+static int
+get_cred_renewable(krb5_creds *creds)
+{
+ return creds->flags & KDC_OPT_RENEWABLE;
+}
+#endif
+
+#if defined(HAVE_KRB5_CREDS_TICKET_FLAGS) && defined(TKT_FLG_PROXIABLE)
+static int
+get_cred_proxiable(krb5_creds *creds)
+{
+ return creds->ticket_flags & TKT_FLG_PROXIABLE;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS_B_PROXIABLE)
+static int
+get_cred_proxiable(krb5_creds *creds)
+{
+ return creds->flags.b.proxiable;
+}
+#elif defined(HAVE_KRB5_CREDS_FLAGS) && defined(KDC_OPT_PROXIABLE)
+static int
+get_cred_proxiable(krb5_creds *creds)
+{
+ return creds->flags & KDC_OPT_PROXIABLE;
+}
+#endif
+
+static void
+set_options_using_creds(krb5_context context,
+ krb5_creds *creds,
+ krb5_get_init_creds_opt *opts)
+{
+ krb5_deltat renew_lifetime;
+ int flag;
+
+ flag = get_cred_forwardable(creds) != 0;
+ krb5_get_init_creds_opt_set_forwardable(opts, flag);
+ flag = get_cred_proxiable(creds) != 0;
+ krb5_get_init_creds_opt_set_proxiable(opts, flag);
+ flag = get_cred_renewable(creds) != 0;
+ if (flag && (creds->times.renew_till > creds->times.starttime)) {
+ renew_lifetime = creds->times.renew_till -
+ creds->times.starttime;
+ krb5_get_init_creds_opt_set_renew_life(opts,
+ renew_lifetime);
+ }
+ if (creds->times.endtime >
+ creds->times.starttime + MINUTES_BEFORE_PROMPTING * 60) {
+ krb5_get_init_creds_opt_set_tkt_life(opts,
+ creds->times.endtime -
+ creds->times.starttime);
+ }
+ /* This doesn't do a deep copy -- fix it later. */
+ /* krb5_get_init_creds_opt_set_address_list(opts, creds->addresses); */
+}
+
+static int
+renew_credentials (void)
+{
+ krb5_error_code retval;
+ krb5_creds my_creds;
+ krb5_ccache ccache;
+ krb5_get_init_creds_opt opts;
+
+ if (kprincipal == NULL) {
+ retval = krb5_parse_name(kcontext, g_get_user_name (),
+ &kprincipal);
+ if (retval) {
+ return retval;
+ }
+ }
+
+ krb5_get_init_creds_opt_init(&opts);
+ if (get_tgt_from_ccache (kcontext, &my_creds))
+ {
+ set_options_using_creds(kcontext, &my_creds, &opts);
+ creds_expiry = my_creds.times.endtime;
+ krb5_free_cred_contents(kcontext, &my_creds);
+ } else {
+ creds_expiry = 0;
+ }
+
+ retval = krb5_get_init_creds_password(kcontext, &my_creds, kprincipal,
+ NULL, krb5_gtk_prompter, 0,
+ 0, NULL, &opts);
+ if (retval)
+ {
+ switch (retval) {
+ case KRB5KDC_ERR_PREAUTH_FAILED:
+ case KRB5KRB_AP_ERR_BAD_INTEGRITY:
+ /* Invalid password, try again. */
+ invalid_password = TRUE;
+ return renew_credentials();
+ default:
+ break;
+ }
+ return retval;
+ }
+
+ retval = krb5_cc_default(kcontext, &ccache);
+ if (retval)
+ return retval;
+
+ retval = krb5_cc_initialize(kcontext, ccache, kprincipal);
+ if (retval)
+ goto out;
+
+ retval = krb5_cc_store_cred(kcontext, ccache, &my_creds);
+ if (retval)
+ goto out;
+
+ creds_expiry = my_creds.times.endtime;
+
+out:
+ krb5_cc_close (kcontext, ccache);
+
+ return retval;
+}
+
+#if defined(HAVE_KRB5_PRINCIPAL_REALM_AS_STRING)
+static size_t
+get_principal_realm_length(krb5_principal p)
+{
+ return strlen(p->realm);
+}
+static const char *
+get_principal_realm_data(krb5_principal p)
+{
+ return p->realm;
+}
+#elif defined(HAVE_KRB5_PRINCIPAL_REALM_AS_DATA)
+static size_t
+get_principal_realm_length(krb5_principal p)
+{
+ return p->realm.length;
+}
+static const char *
+get_principal_realm_data(krb5_principal p)
+{
+ return p->realm.data;
+}
+#endif
+
+static gboolean
+get_tgt_from_ccache (krb5_context context, krb5_creds *creds)
+{
+ krb5_ccache ccache;
+ krb5_creds mcreds;
+ krb5_principal principal, tgt_principal;
+ gboolean ret;
+
+ memset(&ccache, 0, sizeof(ccache));
+ ret = FALSE;
+ if (krb5_cc_default(context, &ccache) == 0)
+ {
+ memset(&principal, 0, sizeof(principal));
+ if (krb5_cc_get_principal(context, ccache, &principal) == 0)
+ {
+ memset(&tgt_principal, 0, sizeof(tgt_principal));
+ if (krb5_build_principal_ext(context, &tgt_principal,
+ get_principal_realm_length(principal),
+ get_principal_realm_data(principal),
+ KRB5_TGS_NAME_SIZE,
+ KRB5_TGS_NAME,
+ get_principal_realm_length(principal),
+ get_principal_realm_data(principal),
+ 0) == 0) {
+ memset(creds, 0, sizeof(*creds));
+ memset(&mcreds, 0, sizeof(mcreds));
+ mcreds.client = principal;
+ mcreds.server = tgt_principal;
+ if (krb5_cc_retrieve_cred(context, ccache,
+ 0,
+ &mcreds,
+ creds) == 0)
+ {
+ ret = TRUE;
+ } else {
+ memset(creds, 0, sizeof(*creds));
+ }
+ krb5_free_principal(context, tgt_principal);
+ }
+ krb5_free_principal(context, principal);
+ }
+ krb5_cc_close(context, ccache);
+ }
+ return ret;
+}
+
+static gboolean
+using_krb5()
+{
+ krb5_error_code err;
+ gboolean have_tgt = FALSE;
+ krb5_creds creds;
+
+ err = krb5_init_context(&kcontext);
+ if (err)
+ return TRUE;
+
+ have_tgt = get_tgt_from_ccache(kcontext, &creds);
+ if (have_tgt) {
+ krb5_copy_principal(kcontext, creds.client, &kprincipal);
+ krb5_free_cred_contents (kcontext, &creds);
+ }
+
+ return have_tgt;
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *dialog;
+ GnomeClient *client;
+ int run_auto = 0, run_always = 0;
+ struct poptOption options[] = {
+ {"auto", 'a', 0, &run_auto, 0,
+ "Only run if an initialized ccache is found (default)", NULL},
+ {"always", 'A', 0, &run_always, 0,
+ "Always run", NULL},
+ {NULL},
+ };
+
+#ifdef ENABLE_NETWORK_MANAGER
+ libnm_glib_ctx *nm_context;
+ guint32 nm_callback_id;
+#endif
+
+ gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
+ argc, argv, GNOME_PARAM_POPT_TABLE, options,
+ GNOME_PARAM_NONE);
+
+ client = gnome_master_client ();
+ gnome_client_set_restart_style (client, GNOME_RESTART_ANYWAY);
+
+ if (run_always && !run_auto)
+ always_run++;
+ if (using_krb5 () || always_run)
+ {
+ g_signal_connect (G_OBJECT (client), "die",
+ G_CALLBACK (gtk_main_quit), NULL);
+
+ g_set_application_name (_("Network Authentication"));
+
+#ifdef ENABLE_NETWORK_MANAGER
+ nm_context = libnm_glib_init ();
+ if (!nm_context)
+ g_warning ("Could not initialize libnm_glib");
+ else
+ {
+ nm_callback_id = libnm_glib_register_callback (nm_context, network_state_cb, &is_online, NULL);
+ if (nm_callback_id == 0)
+ {
+ libnm_glib_shutdown (nm_context);
+ nm_context = NULL;
+
+ g_warning ("Could not connect to NetworkManager, connection status will not be managed!");
+ }
+ }
+#endif /* ENABLE_NETWORK_MANAGER */
+
+ xml = glade_xml_new (GLADEDIR "krb5-auth-dialog.glade", NULL, NULL);
+ dialog = glade_xml_get_widget (xml, "krb5_dialog");
+
+ if (credentials_expiring (NULL))
+ g_timeout_add (CREDENTIAL_CHECK_INTERVAL * 1000, (GSourceFunc)credentials_expiring, NULL);
+
+ gtk_main ();
+ }
+
+ return 0;
+}
diff --git a/src/krb5-auth-dialog.desktop.in b/src/krb5-auth-dialog.desktop.in
new file mode 100644
index 0000000..223aaf9
--- /dev/null
+++ b/src/krb5-auth-dialog.desktop.in
@@ -0,0 +1,9 @@
+[Desktop Entry]
+_Name=Network Authentication
+_Comments=Kerberos Network Authentication Dialog
+Exec=krb5-auth-dialog
+Encoding=UTF-8
+Exec=krb5-auth-dialog
+Terminal=false
+Type=Application
+
diff --git a/src/krb5-auth-dialog.glade b/src/krb5-auth-dialog.glade
new file mode 100644
index 0000000..ef4ff7c
--- /dev/null
+++ b/src/krb5-auth-dialog.glade
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="krb5_dialog">
+ <property name="border_width">6</property>
+ <property name="visible">False</property>
+ <property name="title" translatable="yes">Network Authentication</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="krb5_renew_button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Renew Ticket</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-authentication</property>
+ <property name="icon_size">6</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">10</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="krb5_message_label">
+ <property name="width_request">333</property>
+ <property name="visible">True</property>
+ <property name="label" translatable="no"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Password:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">krb5_entry</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="krb5_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="no"></property>
+ <property name="has_frame">True</property>
+ <property name="activates_default">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="krb5_wrong_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="no">&lt;span size=&quot;smaller&quot;&gt; &lt;/span&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
bgstack15