changed structure of trustdb
authorWerner Koch <wk@gnupg.org>
Mon, 2 Feb 1998 14:36:06 +0000 (14:36 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 2 Feb 1998 14:36:06 +0000 (14:36 +0000)
28 files changed:
Makefile.am
Makefile.in
TODO
acinclude.m4 [new file with mode: 0644]
cipher/Makefile.am
cipher/Makefile.in
config.h.in
configure.in
g10/Makefile.am
g10/Makefile.in
g10/g10.c
g10/g10maint.c [new file with mode: 0644]
g10/parse-packet.c
g10/seckey-cert.c
g10/trustdb.c
g10/trustdb.h
include/i18n.h
include/mpi.h
mpi/Makefile.am
mpi/Makefile.in
mpi/mpicoder.c
mpi/mpiutil.c
scripts/missing [new file with mode: 0755]
tools/Makefile.am
tools/Makefile.in
util/Makefile.am
util/Makefile.in
util/secmem.c

index 7e3529c..dea36e9 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS =  @INTLSUB@ @POSUB@ util mpi cipher tools g10
+SUBDIRS =  util mpi cipher tools g10
 EXTRA_DIST = VERSION
 
 
index 4bf9cf0..95edd97 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,56 +38,106 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = .
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-SUBDIRS =  @INTLSUB@ @POSUB@ util mpi cipher tools g10
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+SUBDIRS =  util mpi cipher tools g10
 EXTRA_DIST = VERSION
-ACLOCAL = aclocal.m4
-ACCONFIG = acconfig.h
-CONFIG_HEADER_IN = config.h.in
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ./config.h
-DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
-Makefile.am Makefile.in NEWS README TODO acconfig.h aclocal.m4 \
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = 
+DIST_COMMON =  README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
+Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 aclocal.m4 \
 config.h.in configure configure.in stamp-h.in
 
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
+GZIP = --best
 default: all
 
+.SUFFIXES:
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile
 
-$(srcdir)/Makefile.in: Makefile.am configure.in
-       cd $(srcdir) && automake Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-# For an explanation of the following Makefile rules, see node
-# `Automatic Remaking' in GNU Autoconf documentation.
-Makefile: Makefile.in config.status
-       CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
-config.status: configure
-       ./config.status --recheck
-$(srcdir)/configure: configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES)
-       cd $(srcdir) && autoconf
+$(ACLOCAL_M4):  configure.in  acinclude.m4
+       cd $(srcdir) && $(ACLOCAL)
 
-$(CONFIG_HEADER): stamp-h
-stamp-h: $(CONFIG_HEADER_IN) config.status
-       CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADER) ./config.status
+config.status: $(srcdir)/configure
+       $(SHELL) ./config.status --recheck
+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+       cd $(srcdir) && $(AUTOCONF)
+
+config.h: stamp-h
+       @:
+stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
+       cd $(top_builddir) \
+         && CONFIG_FILES= CONFIG_HEADERS=config.h \
+            $(SHELL) ./config.status
        @echo timestamp > stamp-h
-$(srcdir)/$(CONFIG_HEADER_IN): stamp-h.in
-$(srcdir)/stamp-h.in: configure.in $(ACLOCAL) $(ACCONFIG) $(CONFIG_TOP) $(CONFIG_BOT)
-       cd $(srcdir) && autoheader
-       echo timestamp > $(srcdir)/stamp-h.in
+$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
+       cd $(top_srcdir) && $(AUTOHEADER)
+       @echo timestamp > $(srcdir)/stamp-h.in
+
+mostlyclean-hdr:
+
+clean-hdr:
+
+distclean-hdr:
+       -rm -f config.h
+
+maintainer-clean-hdr:
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -93,163 +149,186 @@ $(srcdir)/stamp-h.in: configure.in $(ACLOCAL) $(ACCONFIG) $(CONFIG_TOP) $(CONFIG
 @SET_MAKE@
 
 all-recursive install-data-recursive install-exec-recursive \
-installdirs-recursive install-recursive uninstall-recursive \
-check-recursive installcheck-recursive info-recursive dvi-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         target=`echo $@ | sed s/-recursive//`; \
+         echo "Making $$target in $$subdir"; \
+         (cd $$subdir && $(MAKE) $$target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-       for subdir in $(SUBDIRS); do            \
+       @set fnord $(MAKEFLAGS); amf=$$2; \
+       rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+         rev="$$subdir $$rev"; \
+       done; \
+       for subdir in $$rev; do \
          target=`echo $@ | sed s/-recursive//`; \
-         echo making $$target in $$subdir;     \
-         (cd $$subdir && $(MAKE) $$target)     \
-          || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \
+         echo "Making $$target in $$subdir"; \
+         (cd $$subdir && $(MAKE) $$target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
        done && test -z "$$fail"
-
-tags: TAGS
-
 tags-recursive:
-       list="$(SUBDIRS)"; for subdir in $$list; do \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
          (cd $$subdir && $(MAKE) tags); \
        done
 
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(CONFIG_HEADER) \
-               $(TAGS_DEPENDENCIES)
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
        tags=; \
        here=`pwd`; \
-       for subdir in $(SUBDIRS); do \
-         test -f $$subdir/TAGS && { \
-           tags="$$tags -i $$here/$$subdir/TAGS"; \
-         }; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
        done; \
-       test -z "$(ETAGS_ARGS)$(CONFIG_HEADER)$(SOURCES)$(HEADERS)$$tags" \
-         || etags $(ETAGS_ARGS) $$tags $(CONFIG_HEADER) $(SOURCES) $(HEADERS)
+       test -z "$(ETAGS_ARGS)config.h.in$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
 distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
 # tarfile.
 distcheck: dist
-       rm -rf $(distdir)
-       $(TAR) zxf $(distdir).tar.gz
+       -rm -rf $(distdir)
+       GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
        mkdir $(distdir)/=build
        mkdir $(distdir)/=inst
        dc_install_base=`cd $(distdir)/=inst && pwd`; \
        cd $(distdir)/=build \
          && ../configure --srcdir=.. --prefix=$$dc_install_base \
          && $(MAKE) \
+         && $(MAKE) dvi \
          && $(MAKE) check \
          && $(MAKE) install \
          && $(MAKE) installcheck \
          && $(MAKE) dist
-       rm -rf $(distdir)
+       -rm -rf $(distdir)
        @echo "========================"; \
        echo "$(distdir).tar.gz is ready for distribution"; \
        echo "========================"
 dist: distdir
-       chmod -R a+r $(distdir)
-       $(TAR) chozf $(distdir).tar.gz $(distdir)
-       rm -rf $(distdir)
-distdir: $(DEP_DISTFILES)
-       rm -rf $(distdir)
+       -chmod -R a+r $(distdir)
+       GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
+       -rm -rf $(distdir)
+dist-all: distdir
+       -chmod -R a+r $(distdir)
+       GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
+       -rm -rf $(distdir)
+distdir: $(DISTFILES)
+       -rm -rf $(distdir)
        mkdir $(distdir)
-       chmod 777 $(distdir)
-       distdir=`cd $(distdir) && pwd` \
-         && cd $(srcdir) \
-         && automake --include-deps --output-dir=$$distdir --strictness=gnu
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+       -chmod 777 $(distdir)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
-       for subdir in $(SUBDIRS); do            \
-         test -d $(distdir)/$$subdir           \
-         || mkdir $(distdir)/$$subdir          \
-         || exit 1;                            \
-         chmod 777 $(distdir)/$$subdir;        \
-         (cd $$subdir && $(MAKE) distdir=../$(distdir)/$$subdir distdir) \
+       for subdir in $(SUBDIRS); do \
+         test -d $(distdir)/$$subdir \
+         || mkdir $(distdir)/$$subdir \
+         || exit 1; \
+         chmod 777 $(distdir)/$$subdir; \
+         (cd $$subdir && $(MAKE) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
            || exit 1; \
        done
-       $(MAKE) dist-hook
+       $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
 info: info-recursive
-
 dvi: dvi-recursive
-
-check: check-recursive
-
+check: all-am
+       $(MAKE) check-recursive
 installcheck: installcheck-recursive
-
-all-recursive-hack: $(CONFIG_HEADER)
+all-recursive-am: config.h
        $(MAKE) all-recursive
 
 all-am: Makefile config.h
 
 install-exec: install-exec-recursive
+       @$(NORMAL_INSTALL)
 
 install-data: install-data-recursive
+       @$(NORMAL_INSTALL)
 
 install: install-recursive
        @:
 
 uninstall: uninstall-recursive
 
-all: all-recursive-hack all-am
+all: all-recursive-am all-am
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs: installdirs-recursive
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-mostlyclean-am:  mostlyclean-tags mostlyclean-generic
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+mostlyclean-am:  mostlyclean-hdr mostlyclean-tags mostlyclean-generic
 
-clean-am:  clean-tags clean-generic mostlyclean-am 
+clean-am:  clean-hdr clean-tags clean-generic mostlyclean-am
 
-distclean-am:  distclean-tags distclean-generic clean-am 
+distclean-am:  distclean-hdr distclean-tags distclean-generic clean-am
 
-maintainer-clean-am:  maintainer-clean-tags maintainer-clean-generic \
-               distclean-am 
+maintainer-clean-am:  maintainer-clean-hdr maintainer-clean-tags \
+               maintainer-clean-generic distclean-am
 
-mostlyclean:  mostlyclean-am mostlyclean-recursive
+mostlyclean:  mostlyclean-recursive mostlyclean-am
 
-clean:  clean-am clean-recursive
+clean:  clean-recursive clean-am
 
-distclean:  distclean-am distclean-recursive
-       rm -f config.status
+distclean:  distclean-recursive distclean-am
+       -rm -f config.status
 
-maintainer-clean:  maintainer-clean-am maintainer-clean-recursive
+maintainer-clean:  maintainer-clean-recursive maintainer-clean-am
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
-       rm -f config.status
+       -rm -f config.status
 
-.PHONY: default install-data-recursive uninstall-data-recursive \
+.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \
+maintainer-clean-hdr install-data-recursive uninstall-data-recursive \
 install-exec-recursive uninstall-exec-recursive installdirs-recursive \
 uninstalldirs-recursive all-recursive check-recursive \
 installcheck-recursive info-recursive dvi-recursive \
 mostlyclean-recursive distclean-recursive clean-recursive \
 maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir info dvi check \
-installcheck all-recursive-hack all-am install-exec install-data \
-install uninstall all installdirs mostlyclean-generic distclean-generic \
+distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
+installcheck all-recursive-am all-am install-exec install-data install \
+uninstall all installdirs mostlyclean-generic distclean-generic \
 clean-generic maintainer-clean-generic clean mostlyclean distclean \
 maintainer-clean
 
@@ -266,7 +345,6 @@ dist-hook:
                || cp -p $(srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
            done ; \
        done
-.SUFFIXES:
 
 # 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.
diff --git a/TODO b/TODO
index b1a7313..18f0314 100644 (file)
--- a/TODO
+++ b/TODO
     * add signal handling
     * enable a SIGSEGV handler while using zlib functions
 
-    * PGP writes the signature and then the file, this is not
-      a good idea, we can't write such files if we take input from stdin.
-      So the solution will: accept such packet, but write
-      signature the corret way: first the data and then the signature[s]
-      this is much easier to check, also we must read the entire data
-      before we can check wether we have the pubkey or not.  The one-pass
-      signature packets should be implemented to avoid this.
-
     * complete cipher/cast.c
     * complete cipher/dsa.c
 
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..0c30b7d
--- /dev/null
@@ -0,0 +1,356 @@
+dnl macros to configure g10
+
+AC_PREREQ(2.5)
+
+AC_DEFUN(md_TYPE_PTRDIFF_T,
+  [AC_CACHE_CHECK([for ptrdiff_t], ac_cv_type_ptrdiff_t,
+     [AC_TRY_COMPILE(stddef.h, [ptrdiff_t p], ac_cv_type_ptrdiff_t=yes,
+                    ac_cv_type_ptrdiff_t=no)])
+   if test $ac_cv_type_ptrdiff_t = yes; then
+     AC_DEFINE(HAVE_PTRDIFF_T)
+   fi
+])
+
+AC_DEFUN(md_PATH_PROG,
+  [AC_PATH_PROG($1,$2,$3)dnl
+   if echo $$1 | grep openwin > /dev/null; then
+     echo "WARNING: Do not use OpenWin's $2.  (Better remove it.) >&AC_FD_MSG"
+     ac_cv_path_$1=$2
+     $1=$2
+   fi
+])
+
+dnl Check NLS options
+
+AC_DEFUN(ud_LC_MESSAGES,
+  [if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], ud_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       ud_cv_val_LC_MESSAGES=yes, ud_cv_val_LC_MESSAGES=no)])
+    if test $ud_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES)
+    fi
+  fi])
+
+AC_DEFUN(ud_WITH_NLS,
+  [AC_MSG_CHECKING([whether NLS is requested])
+    dnl Default is enabled NLS
+    AC_ARG_ENABLE(nls,
+      [  --disable-nls          do not use Native Language Support],
+      nls_cv_use_nls=$enableval, nls_cv_use_nls=yes)
+    AC_MSG_RESULT($nls_cv_use_nls)
+
+    dnl If we use NLS figure out what method
+    if test "$nls_cv_use_nls" = "yes"; then
+      AC_DEFINE(ENABLE_NLS)
+      AC_MSG_CHECKING([for explicitly using GNU gettext])
+      AC_ARG_WITH(gnu-gettext,
+       [  --with-gnu-gettext      use the GNU gettext library],
+       nls_cv_force_use_gnu_gettext=$withval,
+       nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+      if test "$nls_cv_force_use_gnu_gettext" = "yes"; then
+       nls_cv_use_gnu_gettext=yes
+      else
+       dnl User does not insist on using GNU NLS library.  Figure out what
+       dnl to use.  If gettext or catgets are available (in this order) we
+       dnl use this.  Else we have to fall back to GNU NLS library.
+       AC_CHECK_LIB(intl, main)
+       AC_CHECK_LIB(i, main)
+       CATOBJEXT=NONE
+
+       dnl Debian 1.3.1 does not have libintl.h but libintl.a
+       AC_CHECK_HEADERS(libintl.h)
+       if    test "$ac_cv_lib_intl_main" = yes \
+          && test "$ac_cv_header_libintl_h" != "yes" ; then
+           nls_cv_use_gnu_gettext=yes
+       else
+           AC_CHECK_FUNC(gettext,
+             [AC_DEFINE(HAVE_GETTEXT)
+              md_PATH_PROG(MSGFMT, msgfmt, no)dnl
+              if test "$MSGFMT" != "no"; then
+                AC_CHECK_FUNCS(dcgettext)
+                md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+                md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+                CATOBJEXT=.mo
+                INSTOBJEXT=.mo
+                DATADIRNAME=lib
+                if test "$ac_cv_lib_intl[_]main" = yes; then
+                  INTLLIBS=-lintl
+                elif test "$ac_cv_lib_i[_]main" = yes; then
+                  INTLLIBS=-li
+                fi
+              fi])
+
+           if test "$CATOBJEXT" = "NONE"; then
+             dnl No gettext in C library.  Try catgets next.
+             AC_CHECK_FUNC(catgets,
+               [AC_DEFINE(HAVE_CATGETS)
+                INTLOBJS="\$(CATOBJS)"
+                AC_PATH_PROG(GENCAT, gencat, no)dnl
+                if test "$GENCAT" != "no"; then
+                  AC_PATH_PROGS(GMSGFMT, [gmsgfmt msgfmt], msgfmt)
+                  md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+                  CATOBJEXT=.cat
+                  INSTOBJEXT=.cat
+                  DATADIRNAME=lib
+                  INTLDEPS="\${top_srcdir}/intl/libintl.a"
+                  INTLLIBS=$INTLDEPS
+                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+                  nls_cv_header_intl=intl/libintl.h
+                  nls_cv_header_libgt=intl/libgettext.h
+                fi])
+           fi
+       fi
+
+       if test "$CATOBJEXT" = "NONE"; then
+         dnl Neither gettext nor catgets in included in the C library.
+         dnl Fall back on GNU gettext library.
+         nls_cv_use_gnu_gettext=yes
+       fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+       dnl Mark actions used to generate GNU NLS library.
+       INTLOBJS="\$(GETTOBJS)"
+       md_PATH_PROG(MSGFMT, msgfmt, msgfmt)
+       md_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+       md_PATH_PROG(XGETTEXT, xgettext, xgettext)
+       AC_SUBST(MSGFMT)
+       CATOBJEXT=.gmo
+       INSTOBJEXT=.mo
+       DATADIRNAME=share
+       INTLDEPS="\${top_srcdir}/intl/libintl.a"
+       INTLLIBS=$INTLDEPS
+       LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+       nls_cv_header_intl=intl/libintl.h
+       nls_cv_header_libgt=intl/libgettext.h
+      fi
+
+      # We need to process the intl/ and po/ directory.
+      INTLSUB=intl
+      POSUB=po
+    else
+      DATADIRNAME=share
+      nls_cv_header_intl=intl/libintl.h
+      nls_cv_header_libgt=intl/libgettext.h
+    fi
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLDEPS)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(INTLOBJS)
+    AC_SUBST(INTLSUB)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+AC_DEFUN(AM_GNU_GETTEXT,
+  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+   AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_PROG_RANLIB])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   AC_REQUIRE([AC_C_CONST])dnl
+   AC_REQUIRE([AC_C_INLINE])dnl
+   AC_REQUIRE([AC_TYPE_OFF_T])dnl
+   AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+   AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+   AC_REQUIRE([AC_FUNC_MMAP])dnl
+
+   AC_CHECK_HEADERS([limits.h locale.h nl_types.h malloc.h string.h unistd.h values.h])
+   AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp])
+
+   if test "${ac_cv_func_stpcpy+set}" != "set"; then
+     AC_CHECK_FUNCS(stpcpy)
+   fi
+   if test "${ac_cv_func_stpcpy}" = "yes"; then
+     AC_DEFINE(HAVE_STPCPY)
+   fi
+
+   ud_LC_MESSAGES
+   ud_WITH_NLS
+
+   if test "x$CATOBJEXT" != "x"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for lang in ${LINGUAS=$ALL_LINGUAS}; do
+        case "$ALL_LINGUAS" in
+         *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+        esac
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl Determine which catalog format we have (if any is needed)
+   dnl For now we know about two different formats:
+   dnl  Linux and the normal X/Open format
+   test -d intl || mkdir intl
+   if test "$CATOBJEXT" = ".cat"; then
+     AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
+
+     dnl Transform the SED scripts while copying because some dumb SEDs
+     dnl cannot handle comments.
+     sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
+   fi
+   dnl po2tbl.sed is always needed.
+   sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
+     $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+       < $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+
+
+dnl --------------------------------------------------
+dnl G10 stuff
+dnl --------------------------------------------------
+
+
+dnl WK_MSG_PRINT(STRING)
+dnl print a message
+dnl
+define(WK_MSG_PRINT,
+  [ echo $ac_n "$1"" $ac_c" 1>&AC_FD_MSG
+  ])
+
+
+dnl WK_CHECK_TYPEDEF(TYPE, HAVE_NAME)
+dnl Check wether a typedef exists and create a #define $2 if it exists
+dnl
+AC_DEFUN(WK_CHECK_TYPEDEF,
+  [ AC_MSG_CHECKING(for $1 typedef)
+    AC_CACHE_VAL(wk_cv_typedef_$1,
+    [AC_TRY_COMPILE([#include <stdlib.h>
+    #include <sys/types.h>], [
+    #undef $1
+    int a = sizeof($1);
+    ], wk_cv_typedef_$1=yes, wk_cv_typedef_$1=no )])
+    AC_MSG_RESULT($wk_cv_typedef_$1)
+    if test "$wk_cv_typedef_$1" = yes; then
+       AC_DEFINE($2)
+    fi
+  ])
+
+
+
+dnl WK_LINK_FILES( SRC, DEST )
+dnl same as AC_LINK_FILES, but collet the files to link in
+dnl some special variables and do the link macro
+dnl when WK_DO_LINK_FILES is called
+dnl This is a workaround for AC_LINK_FILES, because it does not work
+dnl correct when using a caching scheme
+dnl
+define(WK_LINK_FILES,
+  [ if test "x$wk_link_files_src" = "x"; then
+       wk_link_files_src="$1"
+       wk_link_files_dst="$2"
+    else
+       wk_link_files_src="$wk_link_files_src $1"
+       wk_link_files_dst="$wk_link_files_dst $2"
+    fi
+  ])
+define(WK_DO_LINK_FILES,
+  [ AC_LINK_FILES( $wk_link_files_src, $wk_link_files_dst )
+  ])
+
+
+dnl WK_CHECK_ENDIAN
+dnl define either LITTLE_ENDIAN_HOST or BIG_ENDIAN_HOST
+dnl
+define(WK_CHECK_ENDIAN,
+  [ if test "$cross_compiling" = yes; then
+       AC_MSG_WARN(cross compiling; assuming little endianess)
+    fi
+    AC_MSG_CHECKING(endianess)
+    AC_CACHE_VAL(wk_cv_c_endian,
+      [ wk_cv_c_endian=unknown
+       # See if sys/param.h defines the BYTE_ORDER macro.
+       AC_TRY_COMPILE([#include <sys/types.h>
+       #include <sys/param.h>], [
+       #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+        bogus endian macros
+       #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
+       AC_TRY_COMPILE([#include <sys/types.h>
+       #include <sys/param.h>], [
+       #if BYTE_ORDER != BIG_ENDIAN
+        not big endian
+       #endif], wk_cv_c_endian=big, wk_cv_c_endian=big)])
+       if test "$wk_cv_c_endian" = unknown; then
+           AC_TRY_RUN([main () {
+             /* Are we little or big endian?  From Harbison&Steele.  */
+             union
+             {
+               long l;
+               char c[sizeof (long)];
+             } u;
+             u.l = 1;
+             exit (u.c[sizeof (long) - 1] == 1);
+             }],
+             wk_cv_c_endian=little,
+             wk_cv_c_endian=big,
+             wk_cv_c_endian=little
+           )
+       fi
+      ])
+    AC_MSG_RESULT([$wk_cv_c_endian])
+    if test "$wk_cv_c_endian" = little; then
+      AC_DEFINE(LITTLE_ENDIAN_HOST)
+    else
+      AC_DEFINE(BIG_ENDIAN_HOST)
+    fi
+  ])
+
+dnl WK_CHECK_CACHE
+dnl
+define(WK_CHECK_CACHE,
+  [ AC_MSG_CHECKING(cached information)
+    wk_hostcheck="$target"
+    AC_CACHE_VAL(wk_cv_hostcheck, [ wk_cv_hostcheck="$wk_hostcheck" ])
+    if test "$wk_cv_hostcheck" != "$wk_hostcheck"; then
+       AC_MSG_RESULT(changed)
+       AC_MSG_WARN(config.cache exists!)
+       AC_MSG_ERROR(you must do 'make distclean' first to compile for
+                different target or different parameters.)
+    else
+       AC_MSG_RESULT(ok)
+    fi
+  ])
+
+
index ecd91a7..ad67228 100644 (file)
@@ -1,12 +1,12 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES =  -I$(top_srcdir)/include
 EXTRA_DIST = @CIPHER_EXTRA_DIST@
 
-noinst_LIBRARIES = cipher
+noinst_LIBRARIES = libcipher.a
 
 
-cipher_SOURCES = blowfish.c    \
+libcipher_a_SOURCES = blowfish.c     \
                 blowfish.h     \
                 elgamal.c      \
                 elgamal.h      \
@@ -27,6 +27,8 @@ cipher_SOURCES = blowfish.c   \
                 misc.c         \
                 smallprime.c
 
-cipher_LIBADD = @CIPHER_EXTRA_OBJS@
+libcipher_a_LIBADD = @CIPHER_EXTRA_OBJS@
+
+$(LIBRARIES): @CIPHER_EXTRA_OBJS@
 
 
index 221efdd..a1cfa5a 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,18 +38,59 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = ..
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES =  -I$(top_srcdir)/include
 EXTRA_DIST = @CIPHER_EXTRA_DIST@
 
-noinst_LIBRARIES = cipher
+noinst_LIBRARIES = libcipher.a
 
-cipher_SOURCES = blowfish.c    \
+libcipher_a_SOURCES = blowfish.c     \
                 blowfish.h     \
                 elgamal.c      \
                 elgamal.h      \
@@ -64,190 +111,196 @@ cipher_SOURCES = blowfish.c      \
                 misc.c         \
                 smallprime.c
 
-cipher_LIBADD = @CIPHER_EXTRA_OBJS@
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+libcipher_a_LIBADD = @CIPHER_EXTRA_OBJS@
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
 CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+CONFIG_CLEAN_FILES = 
+LIBRARIES =  $(noinst_LIBRARIES)
 
-noinst_LIBFILES = libcipher.a
-
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-cipher_OBJECTS = blowfish.o elgamal.o gost.o md5.o primegen.o random.o \
-rmd160.o sha1.o dsa.o md.o misc.o smallprime.o
-EXTRA_cipher_SOURCES =
-LIBFILES =  libcipher.a
+libcipher_a_DEPENDENCIES = 
+libcipher_a_OBJECTS =  blowfish.o elgamal.o gost.o md5.o primegen.o \
+random.o rmd160.o sha1.o dsa.o md.o misc.o smallprime.o
 AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  Makefile.am Makefile.in
 
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
-DEP_FILES = $(srcdir)/.deps/blowfish.P $(srcdir)/.deps/dsa.P \
-$(srcdir)/.deps/elgamal.P $(srcdir)/.deps/gost.P $(srcdir)/.deps/md.P \
-$(srcdir)/.deps/md5.P $(srcdir)/.deps/misc.P $(srcdir)/.deps/primegen.P \
-$(srcdir)/.deps/random.P $(srcdir)/.deps/rmd160.P \
-$(srcdir)/.deps/sha1.P $(srcdir)/.deps/smallprime.P
-SOURCES = $(cipher_SOURCES)
-OBJECTS = $(cipher_OBJECTS)
+GZIP = --best
+DEP_FILES =  .deps/blowfish.P .deps/dsa.P .deps/elgamal.P .deps/gost.P \
+.deps/md.P .deps/md5.P .deps/misc.P .deps/primegen.P .deps/random.P \
+.deps/rmd160.P .deps/sha1.P .deps/smallprime.P
+SOURCES = $(libcipher_a_SOURCES)
+OBJECTS = $(libcipher_a_OBJECTS)
 
 default: all
 
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu cipher/Makefile
 
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
-       cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-Makefile: $(top_builddir)/config.status Makefile.in
-       cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
 
 mostlyclean-noinstLIBRARIES:
 
 clean-noinstLIBRARIES:
-       rm -f $(noinst_LIBFILES)
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
 
 distclean-noinstLIBRARIES:
 
 maintainer-clean-noinstLIBRARIES:
 
 .c.o:
-       $(COMPILE) $<
+       $(COMPILE) -c $<
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
 
 mostlyclean-compile:
-       rm -f *.o core
+       -rm -f *.o core
 
 clean-compile:
 
 distclean-compile:
-       rm -f *.tab.c
+       -rm -f *.tab.c
 
 maintainer-clean-compile:
-$(cipher_OBJECTS): ../config.h
 
-libcipher.a: $(cipher_OBJECTS) $(cipher_LIBADD)
-       rm -f libcipher.a
-       $(AR) cru libcipher.a $(cipher_OBJECTS) $(cipher_LIBADD)
+libcipher.a: $(libcipher_a_OBJECTS) $(libcipher_a_DEPENDENCIES)
+       -rm -f libcipher.a
+       $(AR) cru libcipher.a $(libcipher_a_OBJECTS) $(libcipher_a_LIBADD)
        $(RANLIB) libcipher.a
 
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
 tags: TAGS
 
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
-       here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
-subdir = cipher
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = cipher
+
+distdir: $(DISTFILES)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(top_distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu cipher/Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
 
-# This fragment is probably only useful for maintainers.  It relies on
-# GNU make and gcc.  It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
-       cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
        echo > $@
 
 -include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
-       @echo "mkdeps $< > $@"
-       @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
-         $(MKDEP) $< | sed "$$re" > $@-tmp
-       @if test -n "$o"; then                  \
-         sed 's/\.o:/$$o:/' $@-tmp > $@;       \
-         rm $@-tmp;                            \
-       else                                    \
-         mv $@-tmp $@;                         \
-       fi
-
-# End of maintainer-only section
-info:
 
-dvi:
+mostlyclean-depend:
 
-check: all
+clean-depend:
 
-installcheck:
+distclean-depend:
+
+maintainer-clean-depend:
+       -rm -rf .deps
 
+.deps/%.P: %.c
+       @echo "Computing dependencies for $<..."
+       @o='o'; \
+       test -n "$o" && o='$$o'; \
+       $(MKDEP) $< >$@.tmp \
+         && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
+         && rm -f $@.tmp
+info:
+dvi:
+check: all
+       $(MAKE)
+installcheck:
 install-exec: 
+       @$(NORMAL_INSTALL)
 
 install-data: 
+       @$(NORMAL_INSTALL)
 
 install: install-exec install-data all
        @:
 
 uninstall: 
 
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs:
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-noinstLIBRARIES mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+               mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
-clean:  clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
-               mostlyclean 
+clean:  clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+               clean-generic mostlyclean
 
 distclean:  distclean-noinstLIBRARIES distclean-compile distclean-tags \
-               distclean-generic clean 
-       rm -f config.status
+               distclean-depend distclean-generic clean
+       -rm -f config.status
 
 maintainer-clean:  maintainer-clean-noinstLIBRARIES \
                maintainer-clean-compile maintainer-clean-tags \
-               maintainer-clean-generic distclean 
+               maintainer-clean-depend maintainer-clean-generic \
+               distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
@@ -255,13 +308,14 @@ maintainer-clean:  maintainer-clean-noinstLIBRARIES \
 clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
 mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
-.SUFFIXES:
-.SUFFIXES: .c .o
+
+$(LIBRARIES): @CIPHER_EXTRA_OBJS@
 
 # 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.
index cdb8e2d..723e53f 100644 (file)
 
 
 
-/* Define if using alloca.c.  */
-#undef C_ALLOCA
-
 /* Define to empty if the keyword does not work.  */
 #undef const
 
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
-   This function is required for alloca.c support on those systems.  */
-#undef CRAY_STACKSEG_END
-
-/* Define if you have alloca, as a function or macro.  */
-#undef HAVE_ALLOCA
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
-#undef HAVE_ALLOCA_H
-
 /* Define if you don't have vprintf but do have _doprnt.  */
 #undef HAVE_DOPRNT
 
-/* Define if you have a working `mmap' system call.  */
-#undef HAVE_MMAP
-
 /* Define if you have the vprintf function.  */
 #undef HAVE_VPRINTF
 
 /* Define as __inline if that's what the C compiler calls it.  */
 #undef inline
 
-/* Define to `long' if <sys/types.h> doesn't define.  */
-#undef off_t
-
 /* Define to `unsigned' if <sys/types.h> doesn't define.  */
 #undef size_t
 
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-#undef STACK_DIRECTION
-
 /* Define if you have the ANSI C header files.  */
 #undef STDC_HEADERS
 
 #undef PACKAGE
 #undef G10_LOCALEDIR
 
-/* Define if your locale.h file contains LC_MESSAGES.  */
-#undef HAVE_LC_MESSAGES
-
-/* Define to 1 if NLS is requested.  */
-#undef ENABLE_NLS
-
-/* Define as 1 if you have catgets and don't want to use GNU gettext.  */
-#undef HAVE_CATGETS
-
-/* Define as 1 if you have gettext and don't want to use GNU gettext.  */
-#undef HAVE_GETTEXT
-
-#undef HAVE_STPCPY
-
 #undef BIG_ENDIAN_HOST
 #undef LITTLE_ENDIAN_HOST
 
 /* The number of bytes in a unsigned short.  */
 #undef SIZEOF_UNSIGNED_SHORT
 
-/* Define if you have the dcgettext function.  */
-#undef HAVE_DCGETTEXT
-
-/* Define if you have the getcwd function.  */
-#undef HAVE_GETCWD
-
-/* Define if you have the getpagesize function.  */
-#undef HAVE_GETPAGESIZE
-
 /* Define if you have the mlock function.  */
 #undef HAVE_MLOCK
 
 /* Define if you have the mmap function.  */
 #undef HAVE_MMAP
 
-/* Define if you have the munmap function.  */
-#undef HAVE_MUNMAP
-
-/* Define if you have the putenv function.  */
-#undef HAVE_PUTENV
-
 /* Define if you have the rand function.  */
 #undef HAVE_RAND
 
-/* Define if you have the setenv function.  */
-#undef HAVE_SETENV
-
-/* Define if you have the setlocale function.  */
-#undef HAVE_SETLOCALE
-
 /* Define if you have the stpcpy function.  */
 #undef HAVE_STPCPY
 
-/* Define if you have the strcasecmp function.  */
-#undef HAVE_STRCASECMP
-
-/* Define if you have the strchr function.  */
-#undef HAVE_STRCHR
-
 /* Define if you have the strerror function.  */
 #undef HAVE_STRERROR
 
 /* Define if you have the tcgetattr function.  */
 #undef HAVE_TCGETATTR
 
-/* Define if you have the <limits.h> header file.  */
-#undef HAVE_LIMITS_H
-
-/* Define if you have the <locale.h> header file.  */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the <malloc.h> header file.  */
-#undef HAVE_MALLOC_H
-
-/* Define if you have the <nl_types.h> header file.  */
-#undef HAVE_NL_TYPES_H
-
-/* Define if you have the <string.h> header file.  */
-#undef HAVE_STRING_H
-
 /* Define if you have the <unistd.h> header file.  */
 #undef HAVE_UNISTD_H
 
-/* Define if you have the <values.h> header file.  */
-#undef HAVE_VALUES_H
-
 /* Define if you have the <zlib.h> header file.  */
 #undef HAVE_ZLIB_H
 
-/* Define if you have the i library (-li).  */
-#undef HAVE_LIBI
-
-/* Define if you have the intl library (-lintl).  */
-#undef HAVE_LIBINTL
-
 
 /* The AC_CHECK_SIZEOF() fails for some machines.
  * we provide some fallback values here */
index 7017948..e83e10d 100644 (file)
@@ -5,7 +5,10 @@ dnl (Process this file with autoconf to produce a configure script.)
 
 AC_INIT(g10/g10.c)
 AC_CONFIG_AUX_DIR(scripts)
-AC_CONFIG_HEADER(config.h)
+dnl Ooops: automake 1.2d looks for AC_CONFIG_HEADER (and not AM_..)
+dnl       to decide where config.h is - so we have to add it to
+dnl       every makefile.am
+AM_CONFIG_HEADER(config.h)
 
 
 if test "x$exec_prefix" = xNONE ; then
@@ -45,6 +48,14 @@ WK_CHECK_CACHE
 dnl Checks for programs.
 
 AC_PROG_MAKE_SET
+AC_ARG_PROGRAM
+
+missing_dir=`cd $ac_aux_dir && pwd`
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
+dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
 
 case "${target}" in
     i386--mingw32)
@@ -64,16 +75,15 @@ AC_PROG_CPP
 esac
 
 
-AC_ARG_PROGRAM
-
 dnl Checks for libraries.
 
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h)
 
-ud_GNU_GETTEXT
-WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )
+dnl AM_GNU_GETTEXT
+dnl WK_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl )
+AC_MSG_WARN([i18n disabled for this release - sorry])
 
 
 dnl Checks for typedefs, structures, and compiler characteristics.
index e83e63a..b0a2e92 100644 (file)
@@ -1,15 +1,14 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
 EXTRA_DIST = OPTIONS
+needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
 
-bin_PROGRAMS = g10
+bin_PROGRAMS = g10 g10maint
 
-g10_SOURCES = g10.c            \
+common_source =  \
              build-packet.c    \
              compress.c        \
-             encode.c          \
-             encr-data.c       \
              filter.h          \
              free-packet.c     \
              getkey.c          \
@@ -18,7 +17,6 @@ g10_SOURCES = g10.c           \
              skclist.c         \
              ringedit.c        \
              kbnode.c          \
-             keygen.c          \
              main.h            \
              mainproc.c        \
              armor.c           \
@@ -35,22 +33,29 @@ g10_SOURCES = g10.c         \
              packet.h          \
              parse-packet.c    \
              passphrase.c      \
-             plaintext.c       \
              pubkey-enc.c      \
              seckey-cert.c     \
              seskey.c          \
-             sign.c            \
              import.c          \
              export.c          \
              comment.c         \
              status.c          \
              status.h          \
+             sign.c            \
+             plaintext.c       \
+             encr-data.c       \
+             encode.c          \
              sig-check.c
 
+g10_SOURCES  = g10.c           \
+             $(common_source)  \
+             keygen.c
+
 
-LDADD = -L ../cipher -L ../mpi -L ../util \
-       -lcipher -lmpi -lutil
+g10maint_SOURCES = g10maint.c  \
+             $(common_source)
 
+LDADD = $(needed_libs)
 
-$(PROGRAMS): ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
+$(PROGRAMS): $(needed_libs)
 
index d8b0672..68c10cb 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,22 +38,62 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = ..
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I.. -I$(top_srcdir)/include
 EXTRA_DIST = OPTIONS
+needed_libs = ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
 
-bin_PROGRAMS = g10
+bin_PROGRAMS = g10 g10maint
 
-g10_SOURCES = g10.c            \
+common_source =  \
              build-packet.c    \
              compress.c        \
-             encode.c          \
-             encr-data.c       \
              filter.h          \
              free-packet.c     \
              getkey.c          \
@@ -56,7 +102,6 @@ g10_SOURCES = g10.c          \
              skclist.c         \
              ringedit.c        \
              kbnode.c          \
-             keygen.c          \
              main.h            \
              mainproc.c        \
              armor.c           \
@@ -73,228 +118,259 @@ g10_SOURCES = g10.c              \
              packet.h          \
              parse-packet.c    \
              passphrase.c      \
-             plaintext.c       \
              pubkey-enc.c      \
              seckey-cert.c     \
              seskey.c          \
-             sign.c            \
              import.c          \
              export.c          \
              comment.c         \
              status.c          \
              status.h          \
+             sign.c            \
+             plaintext.c       \
+             encr-data.c       \
+             encode.c          \
              sig-check.c
 
-LDADD = -L ../cipher -L ../mpi -L ../util \
-       -lcipher -lmpi -lutil
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../config.h
-PROGRAMS = $(bin_PROGRAMS)
+g10_SOURCES  = g10.c           \
+             $(common_source)  \
+             keygen.c
 
+g10maint_SOURCES = g10maint.c  \
+             $(common_source)
+
+LDADD = $(needed_libs)
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = ../config.h
+CONFIG_CLEAN_FILES = 
+PROGRAMS =  $(bin_PROGRAMS)
 
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-g10_OBJECTS = g10.o build-packet.o compress.o encode.o encr-data.o \
-free-packet.o getkey.o pkclist.o skclist.o ringedit.o kbnode.o keygen.o \
-mainproc.o armor.o mdfilter.o textfilter.o cipher.o elg.o rsa.o \
-openfile.o keyid.o trustdb.o parse-packet.o passphrase.o plaintext.o \
-pubkey-enc.o seckey-cert.o seskey.o sign.o import.o export.o comment.o \
-status.o sig-check.o
-EXTRA_g10_SOURCES =
+g10_OBJECTS =  g10.o build-packet.o compress.o free-packet.o getkey.o \
+pkclist.o skclist.o ringedit.o kbnode.o mainproc.o armor.o mdfilter.o \
+textfilter.o cipher.o elg.o rsa.o openfile.o keyid.o trustdb.o \
+parse-packet.o passphrase.o pubkey-enc.o seckey-cert.o seskey.o \
+import.o export.o comment.o status.o sign.o plaintext.o encr-data.o \
+encode.o sig-check.o keygen.o
 g10_LDADD = $(LDADD)
-DIST_COMMON = Makefile.am Makefile.in
+g10_DEPENDENCIES =  ../cipher/libcipher.a ../mpi/libmpi.a \
+../util/libutil.a
+g10_LDFLAGS = 
+g10maint_OBJECTS =  g10maint.o build-packet.o compress.o free-packet.o \
+getkey.o pkclist.o skclist.o ringedit.o kbnode.o mainproc.o armor.o \
+mdfilter.o textfilter.o cipher.o elg.o rsa.o openfile.o keyid.o \
+trustdb.o parse-packet.o passphrase.o pubkey-enc.o seckey-cert.o \
+seskey.o import.o export.o comment.o status.o sign.o plaintext.o \
+encr-data.o encode.o sig-check.o
+g10maint_LDADD = $(LDADD)
+g10maint_DEPENDENCIES =  ../cipher/libcipher.a ../mpi/libmpi.a \
+../util/libutil.a
+g10maint_LDFLAGS = 
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  Makefile.am Makefile.in
 
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
-DEP_FILES = $(srcdir)/.deps/armor.P $(srcdir)/.deps/build-packet.P \
-$(srcdir)/.deps/cipher.P $(srcdir)/.deps/comment.P \
-$(srcdir)/.deps/compress.P $(srcdir)/.deps/elg.P \
-$(srcdir)/.deps/encode.P $(srcdir)/.deps/encr-data.P \
-$(srcdir)/.deps/export.P $(srcdir)/.deps/free-packet.P \
-$(srcdir)/.deps/g10.P $(srcdir)/.deps/getkey.P $(srcdir)/.deps/import.P \
-$(srcdir)/.deps/kbnode.P $(srcdir)/.deps/keygen.P \
-$(srcdir)/.deps/keyid.P $(srcdir)/.deps/mainproc.P \
-$(srcdir)/.deps/mdfilter.P $(srcdir)/.deps/openfile.P \
-$(srcdir)/.deps/parse-packet.P $(srcdir)/.deps/passphrase.P \
-$(srcdir)/.deps/pkclist.P $(srcdir)/.deps/plaintext.P \
-$(srcdir)/.deps/pubkey-enc.P $(srcdir)/.deps/ringedit.P \
-$(srcdir)/.deps/rsa.P $(srcdir)/.deps/seckey-cert.P \
-$(srcdir)/.deps/seskey.P $(srcdir)/.deps/sig-check.P \
-$(srcdir)/.deps/sign.P $(srcdir)/.deps/skclist.P \
-$(srcdir)/.deps/status.P $(srcdir)/.deps/textfilter.P \
-$(srcdir)/.deps/trustdb.P
-SOURCES = $(g10_SOURCES)
-OBJECTS = $(g10_OBJECTS)
+GZIP = --best
+DEP_FILES =  .deps/armor.P .deps/build-packet.P .deps/cipher.P \
+.deps/comment.P .deps/compress.P .deps/elg.P .deps/encode.P \
+.deps/encr-data.P .deps/export.P .deps/free-packet.P .deps/g10.P \
+.deps/g10maint.P .deps/getkey.P .deps/import.P .deps/kbnode.P \
+.deps/keygen.P .deps/keyid.P .deps/mainproc.P .deps/mdfilter.P \
+.deps/openfile.P .deps/parse-packet.P .deps/passphrase.P \
+.deps/pkclist.P .deps/plaintext.P .deps/pubkey-enc.P .deps/ringedit.P \
+.deps/rsa.P .deps/seckey-cert.P .deps/seskey.P .deps/sig-check.P \
+.deps/sign.P .deps/skclist.P .deps/status.P .deps/textfilter.P \
+.deps/trustdb.P
+SOURCES = $(g10_SOURCES) $(g10maint_SOURCES)
+OBJECTS = $(g10_OBJECTS) $(g10maint_OBJECTS)
 
 default: all
 
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu g10/Makefile
 
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
-       cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-Makefile: $(top_builddir)/config.status Makefile.in
-       cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
 
 mostlyclean-binPROGRAMS:
 
 clean-binPROGRAMS:
-       rm -f $(bin_PROGRAMS)
+       -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
 
 distclean-binPROGRAMS:
 
 maintainer-clean-binPROGRAMS:
 
 install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
        $(mkinstalldirs) $(bindir)
-       list="$(bin_PROGRAMS)"; for p in $$list; do \
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
          if test -f $$p; then \
-           $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
+           echo "  $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \
+            $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
          else :; fi; \
        done
 
 uninstall-binPROGRAMS:
-       list="$(bin_PROGRAMS)"; for p in $$list; do \
+       $(NORMAL_UNINSTALL)
+       list='$(bin_PROGRAMS)'; for p in $$list; do \
          rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
        done
 
 .c.o:
-       $(COMPILE) $<
+       $(COMPILE) -c $<
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
 
 mostlyclean-compile:
-       rm -f *.o core
+       -rm -f *.o core
 
 clean-compile:
 
 distclean-compile:
-       rm -f *.tab.c
+       -rm -f *.tab.c
 
 maintainer-clean-compile:
-$(g10_OBJECTS): ../config.h
 
 g10: $(g10_OBJECTS) $(g10_DEPENDENCIES)
-       $(LINK) $(g10_OBJECTS) $(g10_LDADD) $(LIBS)
+       @rm -f g10
+       $(LINK) $(g10_LDFLAGS) $(g10_OBJECTS) $(g10_LDADD) $(LIBS)
 
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
+g10maint: $(g10maint_OBJECTS) $(g10maint_DEPENDENCIES)
+       @rm -f g10maint
+       $(LINK) $(g10maint_LDFLAGS) $(g10maint_OBJECTS) $(g10maint_LDADD) $(LIBS)
 
 tags: TAGS
 
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
-       here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
-subdir = g10
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = g10
+
+distdir: $(DISTFILES)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(top_distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu g10/Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
 
-# This fragment is probably only useful for maintainers.  It relies on
-# GNU make and gcc.  It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
-       cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
        echo > $@
 
 -include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
-       @echo "mkdeps $< > $@"
-       @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
-         $(MKDEP) $< | sed "$$re" > $@-tmp
-       @if test -n "$o"; then                  \
-         sed 's/\.o:/$$o:/' $@-tmp > $@;       \
-         rm $@-tmp;                            \
-       else                                    \
-         mv $@-tmp $@;                         \
-       fi
-
-# End of maintainer-only section
-info:
 
-dvi:
+mostlyclean-depend:
 
-check: all
+clean-depend:
 
-installcheck:
+distclean-depend:
+
+maintainer-clean-depend:
+       -rm -rf .deps
 
+.deps/%.P: %.c
+       @echo "Computing dependencies for $<..."
+       @o='o'; \
+       test -n "$o" && o='$$o'; \
+       $(MKDEP) $< >$@.tmp \
+         && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
+         && rm -f $@.tmp
+info:
+dvi:
+check: all
+       $(MAKE)
+installcheck:
 install-exec: install-binPROGRAMS
+       @$(NORMAL_INSTALL)
 
 install-data: 
+       @$(NORMAL_INSTALL)
 
 install: install-exec install-data all
        @:
 
 uninstall: uninstall-binPROGRAMS
 
-all: $(PROGRAMS) Makefile
+all: Makefile $(PROGRAMS)
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs:
        $(mkinstalldirs)  $(bindir)
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-binPROGRAMS mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+               mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
-clean:  clean-binPROGRAMS clean-compile clean-tags clean-generic \
-               mostlyclean 
+clean:  clean-binPROGRAMS clean-compile clean-tags clean-depend \
+               clean-generic mostlyclean
 
 distclean:  distclean-binPROGRAMS distclean-compile distclean-tags \
-               distclean-generic clean 
-       rm -f config.status
+               distclean-depend distclean-generic clean
+       -rm -f config.status
 
 maintainer-clean:  maintainer-clean-binPROGRAMS maintainer-clean-compile \
-               maintainer-clean-tags maintainer-clean-generic \
-               distclean 
+               maintainer-clean-tags maintainer-clean-depend \
+               maintainer-clean-generic distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
@@ -302,15 +378,14 @@ maintainer-clean:  maintainer-clean-binPROGRAMS maintainer-clean-compile \
 clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
 install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
-$(PROGRAMS): ../cipher/libcipher.a ../mpi/libmpi.a ../util/libutil.a
-.SUFFIXES:
-.SUFFIXES: .c .o
+$(PROGRAMS): $(needed_libs)
 
 # 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.
index 9b593e0..16ec5c2 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
 
 
 enum cmd_values { aNull = 0,
-    aSym, aStore, aEncr, aPrimegen, aKeygen, aSign, aSignEncr,
-    aPrintMDs, aSignKey, aClearsig, aListPackets, aEditSig,
-    aKMode, aKModeC, aChangePass, aImport, aListTrustDB,
-    aListTrustPath, aExport,
+    aSym, aStore, aEncr, aKeygen, aSign, aSignEncr,
+    aSignKey, aClearsig, aListPackets, aEditSig,
+    aKMode, aKModeC, aChangePass, aImport,
+    aExport,
 aTest };
 
 
 static void set_cmd( enum cmd_values *ret_cmd,
                        enum cmd_values new_cmd );
-static void print_hex( byte *p, size_t n );
-static void print_mds( const char *fname );
-static void do_test(int);
 
 const char *
 strusage( int level )
@@ -104,7 +101,7 @@ strusage( int level )
 static void
 i18n_init(void)
 {
-  #ifdef HAVE_LIBINTL
+  #ifdef ENABLE_NLS
     setlocale( LC_MESSAGES, "" );
     bindtextdomain( PACKAGE, G10_LOCALEDIR );
     textdomain( PACKAGE );
@@ -189,10 +186,7 @@ main( int argc, char **argv )
     { 510, "debug"     ,4|16, N_("set debugging flags")},
     { 511, "debug-all" ,0, N_("enable full debugging")},
     { 512, "status-fd" ,1, N_("write status info to this fd") },
-    { 513, "gen-prime" , 0, "\r" },
-    { 514, "test"      , 0, "\r" },
     { 515, "fingerprint", 0, N_("show the fingerprints")},
-    { 516, "print-mds" , 0, N_("print all message digests")},
     { 517, "secret-keyring" ,2, N_("add this secret keyring to the list")},
     { 518, "options"   , 2, N_("read options from file")},
     { 519, "no-armor",   0, "\r"},
@@ -207,13 +201,12 @@ main( int argc, char **argv )
     { 528, "pubkey-algo", 2 , N_("select default puplic key algorithm")},
     { 529, "digest-algo", 2 , N_("select default message digest algorithm")},
     { 530, "import",      0 , N_("put public keys into the trustdb")},
-    { 531, "list-trustdb",0 , "\r"},
     { 532, "quick-random", 0, "\r"},
-    { 533, "list-trust-path",0, "\r"},
     { 534, "no-comment", 0,   N_("do not write comment packets")},
     { 535, "completes-needed", 1, N_("(default is 1)")},
     { 536, "marginals-needed", 1, N_("(default is 3)")},
     { 537, "export", 0, N_("export all or the given keys") },
+    { 538, "trustdb-name", 2, "\r" },
 
     {0} };
     ARGPARSE_ARGS pargs;
@@ -236,6 +229,7 @@ main( int argc, char **argv )
     int default_keyring = 1;
     int greeting = 1;
     enum cmd_values cmd = 0;
+    const char *trustdb_name = NULL;
 
 
     secmem_init( 16384 );
@@ -331,10 +325,7 @@ main( int argc, char **argv )
          case 510: opt.debug |= pargs.r.ret_ulong; break;
          case 511: opt.debug = ~0; break;
          case 512: set_status_fd( pargs.r.ret_int ); break;
-         case 513: set_cmd( &cmd, aPrimegen); break;
-         case 514: set_cmd( &cmd, aTest); break;
          case 515: opt.fingerprint = 1; break;
-         case 516: set_cmd( &cmd, aPrintMDs); break;
          case 517: add_secret_keyring(pargs.r.ret_str); sec_nrings++; break;
          case 518:
            /* config files may not be nested (silently ignore them) */
@@ -362,13 +353,12 @@ main( int argc, char **argv )
            opt.def_digest_algo = string_to_digest_algo(pargs.r.ret_str);
            break;
          case 530: set_cmd( &cmd, aImport); break;
-         case 531: set_cmd( &cmd, aListTrustDB); break;
          case 532: quick_random_gen(1); break;
-         case 533: set_cmd( &cmd, aListTrustPath); break;
          case 534: opt.no_comment=1; break;
          case 535: opt.completes_needed = pargs.r.ret_int; break;
          case 536: opt.marginals_needed = pargs.r.ret_int; break;
          case 537: set_cmd( &cmd, aExport); break;
+         case 538: trustdb_name = pargs.r.ret_str; break;
          default : errors++; pargs.err = configfp? 1:2; break;
        }
     }
@@ -453,13 +443,7 @@ main( int argc, char **argv )
        }
     }
 
-    switch( cmd ) {
-      case aPrimegen:
-      case aPrintMDs:
-       break;
-      case aListTrustDB: rc = init_trustdb( argc? 1:0 ); break;
-      default: rc = init_trustdb(1); break;
-    }
+    rc = init_trustdb(1, trustdb_name );
     if( rc )
        log_error(_("failed to initialize the TrustDB: %s\n"), g10_errstr(rc));
 
@@ -578,46 +562,12 @@ main( int argc, char **argv )
            usage(1);
        break;
 
-      case aPrimegen:
-       if( argc == 1 ) {
-           mpi_print( stdout, generate_public_prime( atoi(argv[0]) ), 1);
-           putchar('\n');
-       }
-       else if( argc == 2 ) {
-           mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
-                                                  atoi(argv[1]), NULL ), 1);
-           putchar('\n');
-       }
-       else if( argc == 3 ) {
-           MPI g = mpi_alloc(1);
-           mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
-                                                  atoi(argv[1]), g ), 1);
-           printf("\nGenerator: ");
-           mpi_print( stdout, g, 1 );
-           putchar('\n');
-           mpi_free(g);
-       }
-       else
-           usage(1);
-       break;
-
-      case aPrintMDs:
-       if( !argc )
-           print_mds(NULL);
-       else {
-           for(; argc; argc--, argv++ )
-               print_mds(*argv);
-       }
-       break;
-
       case aKeygen: /* generate a key (interactive) */
        if( argc )
            usage(1);
        generate_keypair();
        break;
 
-      case aTest: do_test( argc? atoi(*argv): 0 ); break;
-
       case aImport:
        if( !argc  )
            usage(1);
@@ -637,22 +587,6 @@ main( int argc, char **argv )
        free_strlist(sl);
        break;
 
-
-      case aListTrustDB:
-       if( !argc )
-           list_trustdb(NULL);
-       else {
-           for( ; argc; argc--, argv++ )
-               list_trustdb( *argv );
-       }
-       break;
-
-      case aListTrustPath:
-       if( argc != 2 )
-           wrong_args("--list-trust-path [-- -]<maxdepth> <username>");
-       list_trust_path( atoi(*argv), argv[1] );
-       break;
-
       case aListPackets:
        opt.list_packets=1;
       default:
@@ -693,95 +627,3 @@ g10_exit( int rc )
 }
 
 
-static void
-print_hex( byte *p, size_t n )
-{
-    int i;
-
-    if( n == 20 ) {
-       for(i=0; i < n ; i++, i++, p += 2 ) {
-           if( i == 10 )
-               putchar(' ');
-           printf(" %02X%02X", *p, p[1] );
-       }
-    }
-    else {
-       for(i=0; i < n ; i++, p++ ) {
-           if( i && !(i%8) )
-               putchar(' ');
-           printf(" %02X", *p );
-       }
-    }
-}
-
-static void
-print_mds( const char *fname )
-{
-    FILE *fp;
-    char buf[1024];
-    size_t n;
-    MD_HANDLE md;
-
-    if( !fname ) {
-       fp = stdin;
-       fname = "[stdin]";
-    }
-    else
-       fp = fopen( fname, "rb" );
-    if( !fp ) {
-       log_error("%s: %s\n", fname, strerror(errno) );
-       return;
-    }
-
-    md = md_open( DIGEST_ALGO_MD5, 0 );
-    md_enable( md, DIGEST_ALGO_RMD160 );
-    md_enable( md, DIGEST_ALGO_SHA1 );
-
-    while( (n=fread( buf, 1, DIM(buf), fp )) )
-       md_write( md, buf, n );
-    if( ferror(fp) )
-       log_error("%s: %s\n", fname, strerror(errno) );
-    else {
-       md_final(md);
-       printf(  "%s:    MD5 =", fname ); print_hex(md_read(md, DIGEST_ALGO_MD5), 16 );
-       printf("\n%s: RMD160 =", fname ); print_hex(md_read(md, DIGEST_ALGO_RMD160), 20 );
-       printf("\n%s:   SHA1 =", fname ); print_hex(md_read(md, DIGEST_ALGO_SHA1), 20 );
-       putchar('\n');
-    }
-
-
-    md_close(md);
-
-    if( fp != stdin )
-       fclose(fp);
-}
-
-
-
-static void
-do_test(int times)
-{
-  #if 0
-    MPI t = mpi_alloc( 50 );
-    MPI m = mpi_alloc( 50 );
-    MPI a = mpi_alloc( 50 );
-    MPI b = mpi_alloc( 50 );
-    MPI p = mpi_alloc( 50 );
-    MPI x = mpi_alloc( 50 );
-
-    /* output = b/(a^x) mod p */
-    log_debug("invm %d times ", times);
-    for( ; times > 0; times -- ) {
-       mpi_fromstr(a, "0xef45678343589854354a4545545454554545455"
-                      "aaaaaaaaaaaaa44444fffdecb33434343443331" );
-       mpi_fromstr(b, "0x8765765589854354a4545545454554545455"
-                      "aaaaaaa466577778decb36666343443331" );
-       mpi_invm( t, a, b );
-       fputc('.', stderr); fflush(stderr);
-    }
-
-
-    m_check(NULL);
-  #endif
-}
-
diff --git a/g10/g10maint.c b/g10/g10maint.c
new file mode 100644 (file)
index 0000000..f02bb11
--- /dev/null
@@ -0,0 +1,624 @@
+/* g10maint.c - The G10 maintenance utility
+ *     Copyright (c) 1997 by Werner Koch (dd9jn)
+ *
+ * This file is part of G10.
+ *
+ * G10 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 of the License, or
+ * (at your option) any later version.
+ *
+ * G10 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 <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "packet.h"
+#include "iobuf.h"
+#include "memory.h"
+#include "util.h"
+#include "main.h"
+#include "options.h"
+#include "keydb.h"
+#include "mpi.h"
+#include "cipher.h"
+#include "filter.h"
+#include "trustdb.h"
+#include "ttyio.h"
+#include "i18n.h"
+#include "status.h"
+
+
+enum cmd_values { aNull = 0,
+    aPrimegen, aPrintMDs, aListPackets, aKMode, aKModeC,
+    aListTrustDB, aListTrustPath,
+aTest };
+
+
+static void set_cmd( enum cmd_values *ret_cmd,
+                       enum cmd_values new_cmd );
+static void print_hex( byte *p, size_t n );
+static void print_mds( const char *fname );
+static void do_test(int);
+
+const char *
+strusage( int level )
+{
+    const char *p;
+    switch( level ) {
+      case 10:
+      case 0:  p = "g10maint - v" VERSION "; "
+                   "Copyright 1997 Werner Koch (dd9jn)\n" ; break;
+      case 13: p = "g10"; break;
+      case 14: p = VERSION; break;
+      case 1:
+      case 11: p = "Usage: g10main [options] (-h for help)";
+               break;
+      case 2:
+      case 12: p =
+    _("Syntax: g10maint [options]\n"
+      "The G10 maintenace utility\n"); break;
+
+      case 26:
+       p = _("Please report bugs to <g10-bugs@isil.d.shuttle.de>.\n");
+       break;
+
+  #if !defined(HAVE_ZLIB_H) && defined(HAVE_RSA_CIPHER)
+      case 30: p = _(
+    "   NOTE: This version is compiled without ZLIB support;\n"
+    "         you are not able to process compresssed data!\n"
+    "WARNING: This version has RSA support! Your are not allowed to\n"
+    "         use it inside the Unites States before Sep 30, 2000!\n" );
+  #elif !defined(HAVE_ZLIB_H)
+      case 30: p = _(
+    "   NOTE: This version is compiled without ZLIB support;\n"
+    "         you are not able to process compresssed data!\n");
+  #elif defined(HAVE_RSA_CIPHER)
+      case 30: p = _(
+    "WARNING: This version has RSA support! Your are not allowed to\n"
+    "         use it inside the Unites States before Sep 30, 2000!\n" );
+  #else
+      case 30: p = "";
+  #endif
+       break;
+      default: p = default_strusage(level);
+    }
+    return p;
+}
+
+static void
+i18n_init(void)
+{
+  #ifdef ENABLE_NLS
+    setlocale( LC_MESSAGES, "" );
+    bindtextdomain( PACKAGE, G10_LOCALEDIR );
+    textdomain( PACKAGE );
+  #endif
+}
+
+static void
+wrong_args( const char *text)
+{
+    fputs(_("Usage: g10maint [options] "),stderr);
+    fputs(text,stderr);
+    putc('\n',stderr);
+    g10_exit(2);
+}
+
+static void
+set_debug(void)
+{
+    if( opt.debug & DBG_MEMORY_VALUE )
+       memory_debug_mode = 1;
+    if( opt.debug & DBG_MEMSTAT_VALUE )
+       memory_stat_debug_mode = 1;
+    if( opt.debug & DBG_MPI_VALUE )
+       mpi_debug_mode = 1;
+    if( opt.debug & DBG_CIPHER_VALUE )
+       cipher_debug_mode = 1;
+    if( opt.debug & DBG_IOBUF_VALUE )
+       iobuf_debug_mode = 1;
+}
+
+
+static void
+set_cmd( enum cmd_values *ret_cmd, enum cmd_values new_cmd )
+{
+    enum cmd_values cmd = *ret_cmd;
+
+    if( !cmd || cmd == new_cmd )
+       cmd = new_cmd;
+    else if( cmd == aKMode && new_cmd == aKModeC )
+       cmd = aKModeC;
+    else {
+       log_error(_("conflicting commands\n"));
+       g10_exit(2);
+    }
+
+    *ret_cmd = cmd;
+}
+
+
+void
+main( int argc, char **argv )
+{
+    static ARGPARSE_OPTS opts[] = {
+    { 'v', "verbose",   0, N_("verbose") },
+    { 'n', "dry-run",   0, N_("don't make any changes") },
+    { 'o', "output",    2, N_("use as output file")},
+    { 'c', NULL    ,    0, N_("check signatures")},
+    { 500, "batch",     0, N_("batch mode: never ask")},
+    { 501, "yes",       0, N_("assume yes on most questions")},
+    { 502, "no",        0, N_("assume no on most questions")},
+    { 509, "keyring"   ,2, N_("add this keyring to the list of keyrings")},
+    { 'k', NULL      , 0, N_("list keys")},
+    { 510, "debug"     ,4|16, N_("set debugging flags")},
+    { 511, "debug-all" ,0, N_("enable full debugging")},
+    { 512, "status-fd" ,1, N_("write status info to this fd") },
+    { 513, "gen-prime" , 0, "\r" },
+    { 514, "test"      , 0, "\r" },
+    { 516, "print-mds" , 0, N_("print all message digests")},
+    { 517, "secret-keyring" ,2, N_("add this secret keyring to the list")},
+    { 518, "options"   , 2, N_("read options from file")},
+    { 519, "no-armor",   0, "\r"},
+    { 520, "no-default-keyring", 0, "\r" },
+    { 521, "list-packets",0,N_("list only the sequence of packets")},
+    { 522, "no-greeting", 0, "\r" },
+    { 526, "no-verbose", 0, "\r"},
+    { 531, "list-trustdb",0 , "\r"},
+    { 533, "list-trust-path",0, "\r"},
+    { 534, "no-comment", 0,   N_("do not write comment packets")},
+    { 535, "completes-needed", 1, N_("(default is 1)")},
+    { 536, "marginals-needed", 1, N_("(default is 3)")},
+    { 538, "trustdb-name", 2, "\r" },
+
+    {0} };
+    ARGPARSE_ARGS pargs;
+    IOBUF a;
+    int rc=0;
+    int orig_argc;
+    char **orig_argv;
+    const char *fname, *fname_print;
+    STRLIST remusr= NULL, locusr=NULL;
+    int nrings=0, sec_nrings=0;
+    armor_filter_context_t afx;
+    const char *s;
+    FILE *configfp = NULL;
+    char *configname = NULL;
+    unsigned configlineno;
+    int parse_verbose = 0;
+    int default_config =1;
+    int errors=0;
+    int default_keyring = 1;
+    int greeting = 1;
+    enum cmd_values cmd = 0;
+    const char *trustdb_name = NULL;
+
+
+    secmem_init( 0 ); /* disable use of secmem */
+
+    i18n_init();
+    opt.compress = -1; /* defaults to standard compress level */
+    opt.def_cipher_algo = CIPHER_ALGO_BLOWFISH;
+    opt.def_pubkey_algo = PUBKEY_ALGO_ELGAMAL;
+    opt.def_digest_algo = DIGEST_ALGO_RMD160;
+    opt.completes_needed = 1;
+    opt.marginals_needed = 3;
+
+    /* check wether we have a config file on the commandline */
+    orig_argc = argc;
+    orig_argv = argv;
+    pargs.argc = &argc;
+    pargs.argv = &argv;
+    pargs.flags=  1;  /* do not remove the args */
+    while( arg_parse( &pargs, opts) ) {
+       if( pargs.r_opt == 'v' )
+           parse_verbose++;
+       else if( pargs.r_opt == 518 ) {
+           /* yes there is one, so we do not try the default one, but
+            * read the option file when it is encountered at the commandline
+            */
+           default_config = 0;
+       }
+    }
+
+    if( default_config )
+       configname = make_filename("~/.g10", "options", NULL );
+
+    argc = orig_argc;
+    argv = orig_argv;
+    pargs.argc = &argc;
+    pargs.argv = &argv;
+    pargs.flags=  1;  /* do not remove the args */
+  next_pass:
+    if( configname ) {
+       configlineno = 0;
+       configfp = fopen( configname, "r" );
+       if( !configfp ) {
+           if( default_config ) {
+               if( parse_verbose > 1 )
+               log_info(_("note: no default option file '%s'\n"), configname );
+           }
+           else
+               log_fatal(_("option file '%s': %s\n"),
+                                   configname, strerror(errno) );
+           m_free(configname); configname = NULL;
+       }
+       if( parse_verbose > 1 )
+           log_info(_("reading options from '%s'\n"), configname );
+       default_config = 0;
+    }
+
+    while( optfile_parse( configfp, configname, &configlineno,
+                                               &pargs, opts) ) {
+       switch( pargs.r_opt ) {
+         case 'v': opt.verbose++;
+                   opt.list_sigs=1;
+                   break;
+         case 'o': opt.outfile = pargs.r.ret_str; break;
+         case 'k': set_cmd( &cmd, aKMode ); break;
+         case 'c': set_cmd( &cmd, aKModeC ); break;
+         case 500: opt.batch = 1; greeting = 0; break;
+         case 501: opt.answer_yes = 1; break;
+         case 502: opt.answer_no = 1; break;
+         case 508: opt.check_sigs = 1; opt.list_sigs = 1; break;
+         case 509: add_keyring(pargs.r.ret_str); nrings++; break;
+         case 510: opt.debug |= pargs.r.ret_ulong; break;
+         case 511: opt.debug = ~0; break;
+         case 512: set_status_fd( pargs.r.ret_int ); break;
+         case 513: set_cmd( &cmd, aPrimegen); break;
+         case 514: set_cmd( &cmd, aTest); break;
+         case 515: opt.fingerprint = 1; break;
+         case 516: set_cmd( &cmd, aPrintMDs); break;
+         case 517: add_secret_keyring(pargs.r.ret_str); sec_nrings++; break;
+         case 518:
+           /* config files may not be nested (silently ignore them) */
+           if( !configfp ) {
+               m_free(configname);
+               configname = m_strdup(pargs.r.ret_str);
+               goto next_pass;
+           }
+           break;
+         case 519: opt.no_armor=1; opt.armor=0; break;
+         case 520: default_keyring = 0; break;
+         case 521: set_cmd( &cmd, aListPackets); break;
+         case 522: greeting = 0; break;
+         case 523: set_passphrase_fd( pargs.r.ret_int ); break;
+         case 526: opt.verbose = 0; opt.list_sigs=0; break;
+         case 527:
+           opt.def_cipher_algo = string_to_cipher_algo(pargs.r.ret_str);
+           break;
+         case 528:
+           opt.def_pubkey_algo = string_to_pubkey_algo(pargs.r.ret_str);
+           break;
+         case 529:
+           opt.def_digest_algo = string_to_digest_algo(pargs.r.ret_str);
+           break;
+         case 531: set_cmd( &cmd, aListTrustDB); break;
+         case 532: quick_random_gen(1); break;
+         case 533: set_cmd( &cmd, aListTrustPath); break;
+         case 534: opt.no_comment=1; break;
+         case 535: opt.completes_needed = pargs.r.ret_int; break;
+         case 536: opt.marginals_needed = pargs.r.ret_int; break;
+         case 538: trustdb_name = pargs.r.ret_str; break;
+         default : errors++; pargs.err = configfp? 1:2; break;
+       }
+    }
+    if( configfp ) {
+       fclose( configfp );
+       configfp = NULL;
+       m_free(configname); configname = NULL;
+       goto next_pass;
+    }
+    m_free( configname ); configname = NULL;
+    if( !opt.def_cipher_algo || check_cipher_algo(opt.def_cipher_algo) ) {
+       log_error(_("selected cipher algorithm is invalid\n"));
+       errors++;
+    }
+    if( !opt.def_pubkey_algo || check_pubkey_algo(opt.def_pubkey_algo) ) {
+       log_error(_("selected pubkey algorithm is invalid\n"));
+       errors++;
+    }
+    if( !opt.def_digest_algo || check_digest_algo(opt.def_digest_algo) ) {
+       log_error(_("selected digest algorithm is invalid\n"));
+       errors++;
+    }
+    if( opt.completes_needed < 1 ) {
+       log_error(_("completes-needed must be greater than 0\n"));
+       errors++;
+    }
+    if( opt.marginals_needed < 2 ) {
+       log_error(_("marginals-needed must be greater than 1\n"));
+       errors++;
+    }
+    if( errors )
+       g10_exit(2);
+
+    write_status( STATUS_ENTER );
+
+    set_debug();
+    if( cmd == aKMode || cmd == aKModeC ) { /* kludge to be compatible to pgp */
+       if( cmd == aKModeC ) {
+           opt.fingerprint = 1;
+           cmd = aKMode;
+       }
+       opt.list_sigs = 0;
+       if( opt.verbose > 2 )
+           opt.check_sigs++;
+       if( opt.verbose > 1 )
+           opt.list_sigs++;
+
+       opt.verbose = opt.verbose > 1;
+    }
+    if( opt.verbose > 1 )
+       set_packet_list_mode(1);
+    if( greeting ) {
+       if( *(s=strusage(10))  )
+           tty_printf("%s", s);
+       if( *(s=strusage(30))  )
+           tty_printf("%s", s);
+    }
+
+    if( !sec_nrings || default_keyring ) { /* add default secret rings */
+       char *p = make_filename("~/.g10", "secring.g10", NULL );
+       add_secret_keyring(p);
+       m_free(p);
+    }
+    if( !nrings || default_keyring ) { /* add default ring */
+       char *p = make_filename("~/.g10", "pubring.g10", NULL );
+       add_keyring(p);
+       m_free(p);
+    }
+
+    if( argc ) {
+       fname_print = fname = *argv;
+    }
+    else {
+       fname_print = "[stdin]";
+       fname = NULL;
+       if( get_passphrase_fd() == 0 ) {
+           /* reading data and passphrase form stdin:
+            * we assume the first line is the passphrase, so
+            * we read it now
+            */
+           /* FIXME: doit */
+       }
+    }
+
+    switch( cmd ) {
+      case aPrimegen:
+      case aPrintMDs:
+       break;
+      case aListTrustDB: rc = init_trustdb( argc? 1:0, trustdb_name ); break;
+      default: rc = init_trustdb(1, trustdb_name ); break;
+    }
+    if( rc )
+       log_error(_("failed to initialize the TrustDB: %s\n"), g10_errstr(rc));
+
+
+    switch( cmd ) {
+      case aKMode: /* list keyring */
+       if( !argc ) { /* list the default public keyrings */
+           int i, seq=0;
+           const char *s;
+
+           while( (s=get_keyring(seq++)) ) {
+               if( !(a = iobuf_open(s)) ) {
+                   log_error(_("can't open '%s'\n"), s);
+                   continue;
+               }
+               if( seq > 1 )
+                   putchar('\n');
+               printf("%s\n", s );
+               for(i=strlen(s); i; i-- )
+                   putchar('-');
+               putchar('\n');
+
+               proc_packets( a );
+               iobuf_close(a);
+           }
+
+       }
+       else if( argc == 1) { /* list the given keyring */
+           if( !(a = iobuf_open(fname)) )
+               log_fatal(_("can't open '%s'\n"), fname_print);
+           proc_packets( a );
+           iobuf_close(a);
+       }
+       else
+           usage(1);
+       break;
+
+      case aPrimegen:
+       if( argc == 1 ) {
+           mpi_print( stdout, generate_public_prime( atoi(argv[0]) ), 1);
+           putchar('\n');
+       }
+       else if( argc == 2 ) {
+           mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
+                                                  atoi(argv[1]), NULL ), 1);
+           putchar('\n');
+       }
+       else if( argc == 3 ) {
+           MPI g = mpi_alloc(1);
+           mpi_print( stdout, generate_elg_prime( atoi(argv[0]),
+                                                  atoi(argv[1]), g ), 1);
+           printf("\nGenerator: ");
+           mpi_print( stdout, g, 1 );
+           putchar('\n');
+           mpi_free(g);
+       }
+       else
+           usage(1);
+       break;
+
+      case aPrintMDs:
+       if( !argc )
+           print_mds(NULL);
+       else {
+           for(; argc; argc--, argv++ )
+               print_mds(*argv);
+       }
+       break;
+
+      case aTest: do_test( argc? atoi(*argv): 0 ); break;
+
+      case aListTrustDB:
+       if( !argc )
+           list_trustdb(NULL);
+       else {
+           for( ; argc; argc--, argv++ )
+               list_trustdb( *argv );
+       }
+       break;
+
+      case aListTrustPath:
+       if( argc != 2 )
+           wrong_args("--list-trust-path [-- -]<maxdepth> <username>");
+       list_trust_path( atoi(*argv), argv[1] );
+       break;
+
+      case aListPackets:
+       opt.list_packets=1;
+      default: /* do regular maintenace tasks */
+       if( argc > 1 )
+           usage(1);
+       if( !(a = iobuf_open(fname)) )
+           log_fatal(_("can't open '%s'\n"), fname_print);
+       if( !opt.no_armor ) {
+           /* push the armor filter, so it can peek at the input data */
+           memset( &afx, 0, sizeof afx);
+           iobuf_push_filter( a, armor_filter, &afx );
+       }
+       if( cmd == aListPackets ) {
+           set_packet_list_mode(1);
+           opt.list_packets=1;
+       }
+       proc_packets( a );
+       iobuf_close(a);
+       break;
+    }
+
+    /* cleanup */
+    FREE_STRLIST(remusr);
+    FREE_STRLIST(locusr);
+    g10_exit(0);
+}
+
+
+void
+g10_exit( int rc )
+{
+    if( opt.verbose )
+       secmem_dump_stats();
+    secmem_term();
+    rc = rc? rc : log_get_errorcount(0)? 2:0;
+    write_status( STATUS_LEAVE );
+    exit(rc );
+}
+
+
+static void
+print_hex( byte *p, size_t n )
+{
+    int i;
+
+    if( n == 20 ) {
+       for(i=0; i < n ; i++, i++, p += 2 ) {
+           if( i == 10 )
+               putchar(' ');
+           printf(" %02X%02X", *p, p[1] );
+       }
+    }
+    else {
+       for(i=0; i < n ; i++, p++ ) {
+           if( i && !(i%8) )
+               putchar(' ');
+           printf(" %02X", *p );
+       }
+    }
+}
+
+static void
+print_mds( const char *fname )
+{
+    FILE *fp;
+    char buf[1024];
+    size_t n;
+    MD_HANDLE md;
+
+    if( !fname ) {
+       fp = stdin;
+       fname = "[stdin]";
+    }
+    else
+       fp = fopen( fname, "rb" );
+    if( !fp ) {
+       log_error("%s: %s\n", fname, strerror(errno) );
+       return;
+    }
+
+    md = md_open( DIGEST_ALGO_MD5, 0 );
+    md_enable( md, DIGEST_ALGO_RMD160 );
+    md_enable( md, DIGEST_ALGO_SHA1 );
+
+    while( (n=fread( buf, 1, DIM(buf), fp )) )
+       md_write( md, buf, n );
+    if( ferror(fp) )
+       log_error("%s: %s\n", fname, strerror(errno) );
+    else {
+       md_final(md);
+       printf(  "%s:    MD5 =", fname ); print_hex(md_read(md, DIGEST_ALGO_MD5), 16 );
+       printf("\n%s: RMD160 =", fname ); print_hex(md_read(md, DIGEST_ALGO_RMD160), 20 );
+       printf("\n%s:   SHA1 =", fname ); print_hex(md_read(md, DIGEST_ALGO_SHA1), 20 );
+       putchar('\n');
+    }
+
+
+    md_close(md);
+
+    if( fp != stdin )
+       fclose(fp);
+}
+
+
+
+static void
+do_test(int times)
+{
+  #if 0
+    MPI t = mpi_alloc( 50 );
+    MPI m = mpi_alloc( 50 );
+    MPI a = mpi_alloc( 50 );
+    MPI b = mpi_alloc( 50 );
+    MPI p = mpi_alloc( 50 );
+    MPI x = mpi_alloc( 50 );
+
+    /* output = b/(a^x) mod p */
+    log_debug("invm %d times ", times);
+    for( ; times > 0; times -- ) {
+       mpi_fromstr(a, "0xef45678343589854354a4545545454554545455"
+                      "aaaaaaaaaaaaa44444fffdecb33434343443331" );
+       mpi_fromstr(b, "0x8765765589854354a4545545454554545455"
+                      "aaaaaaa466577778decb36666343443331" );
+       mpi_invm( t, a, b );
+       fputc('.', stderr); fflush(stderr);
+    }
+
+
+    m_check(NULL);
+  #endif
+}
+
index 5d96756..1a11ec4 100644 (file)
@@ -592,8 +592,11 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen,
            }
            else
                cert->d.elg.is_protected = 0;
-
-           n = pktlen; cert->d.elg.x = mpi_read(inp, &n, 1 ); pktlen -=n;
+           /* It does not make sense to read it into secure memory.
+            * If the user is so careless, not to protect his secret key,
+            * we can assume, that he operates an open system :=(.
+            * So we put the key into secure memory when we unprotect him. */
+           n = pktlen; cert->d.elg.x = mpi_read(inp, &n, 0 ); pktlen -=n;
 
            cert->d.elg.csum = read_16(inp); pktlen -= 2;
            if( list_mode ) {
@@ -646,11 +649,11 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen,
            }
            else
                cert->d.rsa.is_protected = 0;
-
-           n = pktlen; cert->d.rsa.rsa_d = mpi_read(inp, &n, 1 ); pktlen -=n;
-           n = pktlen; cert->d.rsa.rsa_p = mpi_read(inp, &n, 1 ); pktlen -=n;
-           n = pktlen; cert->d.rsa.rsa_q = mpi_read(inp, &n, 1 ); pktlen -=n;
-           n = pktlen; cert->d.rsa.rsa_u = mpi_read(inp, &n, 1 ); pktlen -=n;
+           /* (See comments at the code for elg keys) */
+           n = pktlen; cert->d.rsa.rsa_d = mpi_read(inp, &n, 0 ); pktlen -=n;
+           n = pktlen; cert->d.rsa.rsa_p = mpi_read(inp, &n, 0 ); pktlen -=n;
+           n = pktlen; cert->d.rsa.rsa_q = mpi_read(inp, &n, 0 ); pktlen -=n;
+           n = pktlen; cert->d.rsa.rsa_u = mpi_read(inp, &n, 0 ); pktlen -=n;
 
            cert->d.rsa.csum = read_16(inp); pktlen -= 2;
            if( list_mode ) {
index ab10340..0fa2979 100644 (file)
@@ -85,6 +85,9 @@ check_elg( PKT_secret_cert *cert )
            blowfish_decode_cfb( blowfish_ctx,
                                 cert->d.elg.protect.blowfish.iv,
                                 cert->d.elg.protect.blowfish.iv, 8 );
+           mpi_set_secure(cert->d.elg.x );
+           /*fixme: maybe it is better to set the buger secure with a
+            * new get_buffer_secure() function */
            buffer = mpi_get_buffer( cert->d.elg.x, &nbytes, NULL );
            csum = checksum_u16( nbytes*8 );
            blowfish_decode_cfb( blowfish_ctx, buffer, buffer, nbytes );
@@ -196,6 +199,7 @@ check_rsa( PKT_secret_cert *cert )
                                 cert->d.rsa.protect.blowfish.iv, 8 );
            csum = 0;
            #define X(a) do { \
+               mpi_set_secure(cert->d.rsa.rsa_##a); \
                buffer = mpi_get_buffer( cert->d.rsa.rsa_##a, &nbytes, NULL );\
                csum += checksum_u16( nbytes*8 );                            \
                blowfish_decode_cfb( blowfish_ctx, buffer, buffer, nbytes ); \
index 9e2c5be..116d267 100644 (file)
@@ -371,10 +371,16 @@ dump_record( ulong rnum, TRUSTREC *rec, FILE *fp  )
       case RECTYPE_VER: fprintf(fp, "version\n");
        break;
       case RECTYPE_DIR:
-       fprintf(fp, "dir keyid=%08lx, key=%lu, ctl=%lu, sig=%lu%s\n",
+       fprintf(fp, "dir keyid=%08lx, key=%lu, ctl=%lu, sig=%lu",
                    rec->r.dir.keyid[1],
-                   rec->r.dir.keyrec, rec->r.dir.ctlrec, rec->r.dir.sigrec,
-                   rec->r.dir.no_sigs?"  (inv sigs)":"");
+                   rec->r.dir.keyrec, rec->r.dir.ctlrec, rec->r.dir.sigrec );
+       if( rec->r.dir.no_sigs == 1 )
+           fputs(", (none)", fp );
+       else if( rec->r.dir.no_sigs == 2 )
+           fputs(", (invalid)", fp );
+       else if( rec->r.dir.no_sigs )
+           fputs(", (revoked)", fp );
+       putc('\n', fp);
        break;
       case RECTYPE_KEY: fprintf(fp, "key keyid=%08lx, own=%lu, ownertrust=%02x\n",
                   rec->r.key.keyid[1],
@@ -643,7 +649,7 @@ search_record( PKT_public_cert *pkc, TRUSTREC *rec )
            TRUSTREC keyrec;
 
            if( read_record( rec->r.dir.keyrec, &keyrec, RECTYPE_KEY ) ) {
-               log_error("%lu: ooops: invalid dir record\n", recnum );
+               log_error("%lu: ooops: invalid key record\n", recnum );
                break;
            }
            if( keyrec.r.key.pubkey_algo == pkc->pubkey_algo
@@ -748,6 +754,8 @@ walk_sigrecs( SIGREC_CONTEXT *c, int create )
            if( !c->sigrec && create && !r->r.dir.no_sigs ) {
                rc = build_sigrecs( c->local_id );
                if( rc ) {
+                   if( rc == G10ERR_BAD_CERT )
+                       rc = -1;  /* maybe no selcficnature */
                    if( rc != -1 )
                        log_info("%lu: error building sigs on the fly: %s\n",
                               c->local_id, g10_errstr(rc) );
@@ -1088,6 +1096,10 @@ check_sigs( KBNODE keyblock, int *selfsig_okay )
            int selfsig;
            rc = check_key_signature( keyblock, node, &selfsig );
            if( !rc ) {
+               rc = set_signature_packets_local_id( node->pkt->pkt.signature );
+               if( rc )
+                   log_fatal("set_signature_packets_local_id failed: %s\n",
+                                                             g10_errstr(rc));
                if( selfsig ) {
                    node->flag |= 2; /* mark signature valid */
                    *selfsig_okay = 1;
@@ -1101,9 +1113,10 @@ check_sigs( KBNODE keyblock, int *selfsig_okay )
                    node->flag |= 4; /* mark as duplicate */
            }
            if( DBG_TRUST )
-               log_debug("trustdb: sig from %08lX%s\n",
+               log_debug("trustdb: sig from %08lX(%lu): %s%s\n",
                                (ulong)node->pkt->pkt.signature->keyid[1],
-                                                   g10_errstr(rc) );
+                               node->pkt->pkt.signature->local_id,
+                               g10_errstr(rc), (node->flag&4)?"  (dup)":"" );
        }
     }
     if( dups )
@@ -1128,6 +1141,7 @@ build_sigrecs( ulong pubkeyid )
     int rc=0;
     int i, selfsig;
     ulong rnum, rnum2;
+    ulong first_sigrec = 0;
 
     if( DBG_TRUST )
        log_debug("trustdb: build_sigrecs for pubkey %lu\n", (ulong)pubkeyid );
@@ -1164,11 +1178,11 @@ build_sigrecs( ulong pubkeyid )
     }
     if( !selfsig ) {
        log_error("build_sigrecs: self-certificate missing\n" );
-       update_no_sigs( pubkeyid, 1 );
+       update_no_sigs( pubkeyid, 2 );
        rc = G10ERR_BAD_CERT;
        goto leave;
     }
-    update_no_sigs( pubkeyid, 0 );
+    update_no_sigs( pubkeyid, 0 ); /* assume we have sigs */
 
     /* valid key signatures are now marked; we can now build the
      * sigrecs */
@@ -1203,6 +1217,8 @@ build_sigrecs( ulong pubkeyid )
                        log_error("build_sigrecs: write_record failed\n" );
                        goto leave;
                    }
+                   if( !first_sigrec )
+                       first_sigrec = rnum2;
                }
                rec2 = rec;
                rnum2 = rnum;
@@ -1226,6 +1242,8 @@ build_sigrecs( ulong pubkeyid )
                log_error("build_sigrecs: write_record failed\n" );
                goto leave;
            }
+           if( !first_sigrec )
+               first_sigrec = rnum2;
        }
        if( i ) { /* write the pending record */
            rec.r.sig.owner = pubkeyid;
@@ -1235,8 +1253,24 @@ build_sigrecs( ulong pubkeyid )
                log_error("build_sigrecs: write_record failed\n" );
                goto leave;
            }
+           if( !first_sigrec )
+               first_sigrec = rnum;
+       }
+    }
+    if( first_sigrec ) {
+       /* update the dir record */
+       if( (rc =read_record( pubkeyid, &rec, RECTYPE_DIR )) ) {
+           log_error("update_dir_record: read failed\n");
+           goto leave;
+       }
+       rec.r.dir.sigrec = first_sigrec;
+       if( (rc=write_record( pubkeyid, &rec )) ) {
+           log_error("update_dir_record: write failed\n");
+           goto leave;
        }
     }
+    else
+       update_no_sigs( pubkeyid, 1 ); /* no signatures */
 
   leave:
     m_free( finfo );
@@ -1309,7 +1343,7 @@ static int
 propagate_trust( TRUST_SEG_LIST tslist )
 {
     int i, rc;
-    unsigned trust;
+    unsigned trust, tr;
     TRUST_SEG_LIST tsl;
 
     for(tsl = tslist; tsl; tsl = tsl->next ) {
@@ -1325,9 +1359,11 @@ propagate_trust( TRUST_SEG_LIST tslist )
            tsl->seg[i].trust = trust;
            if( i > 0 ) {
                /* get the trust of this pubkey */
-               rc = get_ownertrust( tsl->seg[i].lid, &trust );
+               rc = get_ownertrust( tsl->seg[i].lid, &tr );
                if( rc )
                    return rc;
+               if( tr < trust )
+                   trust = tr;
            }
        }
     }
@@ -1362,8 +1398,15 @@ do_check( ulong pubkeyid, TRUSTREC *dr, unsigned *trustlevel )
        if( !rc ) /* and read again */
            rc = read_record( pubkeyid, dr, RECTYPE_DIR );
     }
-    if( !rc && !dr->r.dir.sigrec )
-       rc = -1;
+    if( !rc && !dr->r.dir.sigrec ) {
+       /* See wether this is our own key */
+       if( !qry_lid_table_flag( ultikey_table, pubkeyid, NULL ) ) {
+           *trustlevel = TRUST_ULTIMATE;
+           return 0;
+       }
+       else
+           rc = -1;
+    }
     if( rc )
        return rc;  /* error while looking for sigrec or building sigrecs */
 
@@ -1435,7 +1478,7 @@ do_check( ulong pubkeyid, TRUSTREC *dr, unsigned *trustlevel )
  *       1: used for initial program startup
  */
 int
-init_trustdb( int level )
+init_trustdb( int level, const char *dbname )
 {
     int rc=0;
 
@@ -1443,7 +1486,8 @@ init_trustdb( int level )
        ultikey_table = new_lid_table();
 
     if( !level || level==1 ) {
-       char *fname = make_filename("~/.g10", "trustdb.g10", NULL );
+       char *fname = dbname? m_strdup( dbname )
+                           : make_filename("~/.g10", "trustdb.g10", NULL );
        if( access( fname, R_OK ) ) {
            if( errno != ENOENT ) {
                log_error("can't access %s: %s\n", fname, strerror(errno) );
@@ -1883,7 +1927,7 @@ update_no_sigs( ulong lid, int no_sigs )
        return G10ERR_TRUSTDB;
     }
 
-    rec.r.dir.no_sigs = !!no_sigs;
+    rec.r.dir.no_sigs = no_sigs;
     if( write_record( lid, &rec ) ) {
        log_error("update_no_sigs: write failed\n");
        return G10ERR_TRUSTDB;
index ee604de..5eb52c9 100644 (file)
@@ -22,7 +22,7 @@
 #define G10_TRUSTDB_H
 
 
-
+/* Trust values mus be sorted in ascending order */
 #define TRUST_UNKNOWN    0  /* not yet calculated */
 #define TRUST_EXPIRED    1  /* calculation may be invalid */
 #define TRUST_UNDEFINED   2  /* not enough informations for calculation */
@@ -35,7 +35,7 @@
 /*-- trustdb.c --*/
 void list_trustdb(const char *username);
 void list_trust_path( int max_depth, const char *username );
-int init_trustdb( int level );
+int init_trustdb( int level, const char *dbname );
 int check_trust( PKT_public_cert *pkc, unsigned *r_trustlevel );
 int enum_trust_web( void **context, ulong *lid );
 int get_ownertrust( ulong lid, unsigned *r_otrust );
index a75f3c4..55911b4 100644 (file)
 #ifndef G10_I18N_H
 #define G10_I18N_H
 
-#ifdef HAVE_LIBINTL
+#ifdef ENABLE_NLS
+#ifdef HAVE_LIBINTL_H
   #include <libintl.h>
+#else
+  #include "../intl/libintl.h"
+#endif
   #define _(a) gettext (a)
   #ifdef gettext_noop
     #define N_(a) gettext_noop (a)
index 7a43b30..1354dda 100644 (file)
@@ -78,6 +78,8 @@ typedef struct mpi_struct {
   void mpi_resize( MPI a, unsigned nlimbs );
   MPI  mpi_copy( MPI a );
 #endif
+#define mpi_is_secure(a) ((a) && (a)->secure)
+void mpi_set_secure( MPI a );
 void mpi_clear( MPI a );
 void mpi_set( MPI w, MPI u);
 void mpi_set_ui( MPI w, ulong u);
index 18b5581..11b15dd 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES =  -I$(top_srcdir)/include
+INCLUDES = -I..  -I$(top_srcdir)/include
 CFLAGS += -O2
 
 SUFFIXES = .S .s
@@ -8,10 +8,10 @@ SUFFIXES = .S .s
 EXTRA_DIST = config.links
 
 
-noinst_LIBRARIES = mpi
+noinst_LIBRARIES = libmpi.a
 # noinst_HEADERS   =
 
-mpi_SOURCES = longlong.h     \
+libmpi_a_SOURCES = longlong.h    \
              mpi-add.c      \
              mpi-bit.c      \
              mpi-cmp.c      \
@@ -31,7 +31,7 @@ mpi_SOURCES = longlong.h     \
              mpih-mul.c     \
              mpiutil.c
 
-mpi_LIBADD =  mpih-mul1.o    \
+libmpi_a_LIBADD =  mpih-mul1.o   \
              mpih-mul2.o    \
              mpih-mul3.o    \
              mpih-add1.o    \
index 81910ff..98b4275 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,22 +38,63 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = ..
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-INCLUDES =  -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I..  -I$(top_srcdir)/include
 
 SUFFIXES = .S .s
 
 EXTRA_DIST = config.links
 
-noinst_LIBRARIES = mpi
+noinst_LIBRARIES = libmpi.a
 # noinst_HEADERS   =
 
-mpi_SOURCES = longlong.h     \
+libmpi_a_SOURCES = longlong.h    \
              mpi-add.c      \
              mpi-bit.c      \
              mpi-cmp.c      \
@@ -67,199 +114,205 @@ mpi_SOURCES = longlong.h     \
              mpih-mul.c     \
              mpiutil.c
 
-mpi_LIBADD =  mpih-mul1.o    \
+libmpi_a_LIBADD =  mpih-mul1.o   \
              mpih-mul2.o    \
              mpih-mul3.o    \
              mpih-add1.o    \
              mpih-sub1.o    \
              mpih-shift.o  @MPI_EXTRA_ASM_OBJS@
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
 CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+CONFIG_CLEAN_FILES = 
+LIBRARIES =  $(noinst_LIBRARIES)
 
-noinst_LIBFILES = libmpi.a
-
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-mpi_OBJECTS = mpi-add.o mpi-bit.o mpi-cmp.o mpi-div.o mpi-gcd.o \
+libmpi_a_DEPENDENCIES =  mpih-mul1.o mpih-mul2.o mpih-mul3.o mpih-add1.o \
+mpih-sub1.o mpih-shift.o
+libmpi_a_OBJECTS =  mpi-add.o mpi-bit.o mpi-cmp.o mpi-div.o mpi-gcd.o \
 mpi-inv.o mpi-mul.o mpi-pow.o mpi-scan.o mpicoder.o mpih-cmp.o \
 mpih-add.o mpih-sub.o mpih-div.o mpih-mul.o mpiutil.o
-EXTRA_mpi_SOURCES =
-LIBFILES =  libmpi.a
 AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  Makefile.am Makefile.in
 
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
-DEP_FILES = $(srcdir)/.deps/mpi-add.P $(srcdir)/.deps/mpi-bit.P \
-$(srcdir)/.deps/mpi-cmp.P $(srcdir)/.deps/mpi-div.P \
-$(srcdir)/.deps/mpi-gcd.P $(srcdir)/.deps/mpi-inv.P \
-$(srcdir)/.deps/mpi-mul.P $(srcdir)/.deps/mpi-pow.P \
-$(srcdir)/.deps/mpi-scan.P $(srcdir)/.deps/mpicoder.P \
-$(srcdir)/.deps/mpih-add.P $(srcdir)/.deps/mpih-cmp.P \
-$(srcdir)/.deps/mpih-div.P $(srcdir)/.deps/mpih-mul.P \
-$(srcdir)/.deps/mpih-sub.P $(srcdir)/.deps/mpiutil.P
-SOURCES = $(mpi_SOURCES)
-OBJECTS = $(mpi_OBJECTS)
+GZIP = --best
+DEP_FILES =  .deps/mpi-add.P .deps/mpi-bit.P .deps/mpi-cmp.P \
+.deps/mpi-div.P .deps/mpi-gcd.P .deps/mpi-inv.P .deps/mpi-mul.P \
+.deps/mpi-pow.P .deps/mpi-scan.P .deps/mpicoder.P .deps/mpih-add.P \
+.deps/mpih-cmp.P .deps/mpih-div.P .deps/mpih-mul.P .deps/mpih-sub.P \
+.deps/mpiutil.P
+SOURCES = $(libmpi_a_SOURCES)
+OBJECTS = $(libmpi_a_OBJECTS)
 
 default: all
 
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu mpi/Makefile
 
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
-       cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-Makefile: $(top_builddir)/config.status Makefile.in
-       cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
 
 mostlyclean-noinstLIBRARIES:
 
 clean-noinstLIBRARIES:
-       rm -f $(noinst_LIBFILES)
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
 
 distclean-noinstLIBRARIES:
 
 maintainer-clean-noinstLIBRARIES:
 
 .c.o:
-       $(COMPILE) $<
+       $(COMPILE) -c $<
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
 
 mostlyclean-compile:
-       rm -f *.o core
+       -rm -f *.o core
 
 clean-compile:
 
 distclean-compile:
-       rm -f *.tab.c
+       -rm -f *.tab.c
 
 maintainer-clean-compile:
-$(mpi_OBJECTS): ../config.h
 
-libmpi.a: $(mpi_OBJECTS) $(mpi_LIBADD)
-       rm -f libmpi.a
-       $(AR) cru libmpi.a $(mpi_OBJECTS) $(mpi_LIBADD)
+libmpi.a: $(libmpi_a_OBJECTS) $(libmpi_a_DEPENDENCIES)
+       -rm -f libmpi.a
+       $(AR) cru libmpi.a $(libmpi_a_OBJECTS) $(libmpi_a_LIBADD)
        $(RANLIB) libmpi.a
 
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
 tags: TAGS
 
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
-       here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
-subdir = mpi
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = mpi
+
+distdir: $(DISTFILES)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(top_distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu mpi/Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
 
-# This fragment is probably only useful for maintainers.  It relies on
-# GNU make and gcc.  It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
-       cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
        echo > $@
 
 -include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
-       @echo "mkdeps $< > $@"
-       @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
-         $(MKDEP) $< | sed "$$re" > $@-tmp
-       @if test -n "$o"; then                  \
-         sed 's/\.o:/$$o:/' $@-tmp > $@;       \
-         rm $@-tmp;                            \
-       else                                    \
-         mv $@-tmp $@;                         \
-       fi
-
-# End of maintainer-only section
-info:
 
-dvi:
+mostlyclean-depend:
 
-check: all
+clean-depend:
 
-installcheck:
+distclean-depend:
 
+maintainer-clean-depend:
+       -rm -rf .deps
+
+.deps/%.P: %.c
+       @echo "Computing dependencies for $<..."
+       @o='o'; \
+       test -n "$o" && o='$$o'; \
+       $(MKDEP) $< >$@.tmp \
+         && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
+         && rm -f $@.tmp
+info:
+dvi:
+check: all
+       $(MAKE)
+installcheck:
 install-exec: 
+       @$(NORMAL_INSTALL)
 
 install-data: 
+       @$(NORMAL_INSTALL)
 
 install: install-exec install-data all
        @:
 
 uninstall: 
 
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs:
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-noinstLIBRARIES mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+               mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
-clean:  clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
-               mostlyclean 
+clean:  clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+               clean-generic mostlyclean
 
 distclean:  distclean-noinstLIBRARIES distclean-compile distclean-tags \
-               distclean-generic clean 
-       rm -f config.status
+               distclean-depend distclean-generic clean
+       -rm -f config.status
 
 maintainer-clean:  maintainer-clean-noinstLIBRARIES \
                maintainer-clean-compile maintainer-clean-tags \
-               maintainer-clean-generic distclean 
+               maintainer-clean-depend maintainer-clean-generic \
+               distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
@@ -267,14 +320,13 @@ maintainer-clean:  maintainer-clean-noinstLIBRARIES \
 clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
 mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 CFLAGS += -O2
-.SUFFIXES:
-.SUFFIXES: .c .o $(SUFFIXES)
 
 # 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.
index b371fa6..efb5d09 100644 (file)
@@ -326,6 +326,14 @@ mpi_set_buffer( MPI a, const byte *buffer, unsigned nbytes, int sign )
        alimb |= *p-- << 16 ;
        alimb |= *p-- << 24 ;
       #elif BYTES_PER_MPI_LIMB == 8
+       alimb  = *p--       ;
+       alimb |= *p-- <<  8 ;
+       alimb |= *p-- << 16 ;
+       alimb |= *p-- << 24 ;
+       alimb |= *p-- << 32 ;
+       alimb |= *p-- << 40 ;
+       alimb |= *p-- << 48 ;
+       alimb |= *p-- << 56 ;
       #else
        #error please implement for this limb size.
       #endif
index 068a9a3..7515eaf 100644 (file)
@@ -1,4 +1,4 @@
-/* mpiutil.c  -  Utility functions for MPI
+/* mpiutilac  -  Utility functions for MPI
  *     Copyright (c) 1997 by Werner Koch (dd9jn)
  *
  * This file is part of G10.
@@ -192,6 +192,34 @@ mpi_free( MPI a )
 }
 
 
+void
+mpi_set_secure( MPI a )
+{
+    mpi_ptr_t ap, bp;
+
+    if( a->secure )
+       return;
+    a->secure = 1;
+    ap = a->d;
+    if( !a->nlimbs ) {
+       assert(!ap);
+       return;
+    }
+  #ifdef M_DEBUG
+    bp = mpi_debug_alloc_limb_space( a->nlimbs, 1, "set_secure" );
+  #else
+    bp = mpi_alloc_limb_space( a->nlimbs, 1 );
+  #endif
+    MPN_COPY( bp, ap, a->nlimbs );
+    a->d = bp;
+  #ifdef M_DEBUG
+    mpi_debug_free_limb_space(ap, "set_secure");
+  #else
+    mpi_free_limb_space(ap);
+  #endif
+}
+
+
 /****************
  * Note: This copy function shpould not interpret the MPI
  *      but copy it transparently.
diff --git a/scripts/missing b/scripts/missing
new file mode 100755 (executable)
index 0000000..a6abd06
--- /dev/null
@@ -0,0 +1,134 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+case "$1" in
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        touch file \`y.tab.c'
+  makeinfo     touch the output file
+  yacc         touch file \`y.tab.c'"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing - GNU libit 0.0"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`configure.in'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`configure.in'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`configure.in'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    touch config.h.in
+    ;;
+
+  automake)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print \
+      | sed 's/^\(.*\).am$/touch \1.in/' \
+      | sh
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    touch y.tab.c
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequirements for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
index bddbf57..3b43090 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
 
 noinst_PROGRAMS = mpicalc bftest
 
index c9e82d7..f6b0776 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,13 +38,54 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = ..
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+
+INCLUDES = -I.. -I$(top_srcdir)/include
 
 noinst_PROGRAMS = mpicalc bftest
 
@@ -48,186 +95,200 @@ bftest_SOURCES = bftest.c
 
 LDADD = -L ../cipher -L ../mpi -L ../util -L ../cipher \
        -lmpi -lutil -lmpi -lutil -lcipher
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
 CONFIG_HEADER = ../config.h
-PROGRAMS = $(noinst_PROGRAMS)
-
+CONFIG_CLEAN_FILES = 
+PROGRAMS =  $(noinst_PROGRAMS)
 
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-mpicalc_OBJECTS = mpicalc.o
-EXTRA_mpicalc_SOURCES =
+mpicalc_OBJECTS =  mpicalc.o
 mpicalc_LDADD = $(LDADD)
-bftest_OBJECTS = bftest.o
-EXTRA_bftest_SOURCES =
+mpicalc_DEPENDENCIES =  ../cipher ../mpi ../util ../cipher
+mpicalc_LDFLAGS = 
+bftest_OBJECTS =  bftest.o
 bftest_LDADD = $(LDADD)
-DIST_COMMON = Makefile.am Makefile.in
-
+bftest_DEPENDENCIES =  ../cipher ../mpi ../util ../cipher
+bftest_LDFLAGS = 
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  Makefile.am Makefile.in
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
 
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
-DEP_FILES = $(srcdir)/.deps/bftest.P $(srcdir)/.deps/mpicalc.P
+GZIP = --best
+DEP_FILES =  .deps/bftest.P .deps/mpicalc.P
 SOURCES = $(mpicalc_SOURCES) $(bftest_SOURCES)
 OBJECTS = $(mpicalc_OBJECTS) $(bftest_OBJECTS)
 
 default: all
 
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile
 
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
-       cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-Makefile: $(top_builddir)/config.status Makefile.in
-       cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
 
 mostlyclean-noinstPROGRAMS:
 
 clean-noinstPROGRAMS:
-       rm -f $(noinst_PROGRAMS)
+       -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
 
 distclean-noinstPROGRAMS:
 
 maintainer-clean-noinstPROGRAMS:
 
 .c.o:
-       $(COMPILE) $<
+       $(COMPILE) -c $<
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
 
 mostlyclean-compile:
-       rm -f *.o core
+       -rm -f *.o core
 
 clean-compile:
 
 distclean-compile:
-       rm -f *.tab.c
+       -rm -f *.tab.c
 
 maintainer-clean-compile:
-$(mpicalc_OBJECTS): ../config.h
 
 mpicalc: $(mpicalc_OBJECTS) $(mpicalc_DEPENDENCIES)
-       $(LINK) $(mpicalc_OBJECTS) $(mpicalc_LDADD) $(LIBS)
-$(bftest_OBJECTS): ../config.h
+       @rm -f mpicalc
+       $(LINK) $(mpicalc_LDFLAGS) $(mpicalc_OBJECTS) $(mpicalc_LDADD) $(LIBS)
 
 bftest: $(bftest_OBJECTS) $(bftest_DEPENDENCIES)
-       $(LINK) $(bftest_OBJECTS) $(bftest_LDADD) $(LIBS)
-
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
+       @rm -f bftest
+       $(LINK) $(bftest_LDFLAGS) $(bftest_OBJECTS) $(bftest_LDADD) $(LIBS)
 
 tags: TAGS
 
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
-       here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
-subdir = tools
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = tools
+
+distdir: $(DISTFILES)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(top_distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu tools/Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
 
-# This fragment is probably only useful for maintainers.  It relies on
-# GNU make and gcc.  It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
-
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
-       cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
        echo > $@
 
 -include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
-       @echo "mkdeps $< > $@"
-       @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
-         $(MKDEP) $< | sed "$$re" > $@-tmp
-       @if test -n "$o"; then                  \
-         sed 's/\.o:/$$o:/' $@-tmp > $@;       \
-         rm $@-tmp;                            \
-       else                                    \
-         mv $@-tmp $@;                         \
-       fi
-
-# End of maintainer-only section
-info:
 
-dvi:
+mostlyclean-depend:
 
-check: all
+clean-depend:
 
-installcheck:
+distclean-depend:
 
+maintainer-clean-depend:
+       -rm -rf .deps
+
+.deps/%.P: %.c
+       @echo "Computing dependencies for $<..."
+       @o='o'; \
+       test -n "$o" && o='$$o'; \
+       $(MKDEP) $< >$@.tmp \
+         && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
+         && rm -f $@.tmp
+info:
+dvi:
+check: all
+       $(MAKE)
+installcheck:
 install-exec: 
+       @$(NORMAL_INSTALL)
 
 install-data: 
+       @$(NORMAL_INSTALL)
 
 install: install-exec install-data all
        @:
 
 uninstall: 
 
-all: $(PROGRAMS) Makefile
+all: Makefile $(PROGRAMS)
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs:
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-noinstPROGRAMS mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+               mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
-clean:  clean-noinstPROGRAMS clean-compile clean-tags clean-generic \
-               mostlyclean 
+clean:  clean-noinstPROGRAMS clean-compile clean-tags clean-depend \
+               clean-generic mostlyclean
 
 distclean:  distclean-noinstPROGRAMS distclean-compile distclean-tags \
-               distclean-generic clean 
-       rm -f config.status
+               distclean-depend distclean-generic clean
+       -rm -f config.status
 
 maintainer-clean:  maintainer-clean-noinstPROGRAMS \
                maintainer-clean-compile maintainer-clean-tags \
-               maintainer-clean-generic distclean 
+               maintainer-clean-depend maintainer-clean-generic \
+               distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
@@ -235,15 +296,14 @@ maintainer-clean:  maintainer-clean-noinstPROGRAMS \
 clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
 mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
 $(PROGRAMS): ../mpi/libmpi.a ../cipher/libcipher.a
-.SUFFIXES:
-.SUFFIXES: .c .o
 
 # 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.
index 222b4d8..8af2b14 100644 (file)
@@ -1,12 +1,12 @@
 ## Process this file with automake to produce Makefile.in
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = -I.. -I$(top_srcdir)/include
 
-noinst_LIBRARIES = util
+noinst_LIBRARIES = libutil.a
 
 
-util_SOURCES = logger.c fileutil.c miscutil.c strgutil.c  \
-              ttyio.c  argparse.c memory.c secmem.c errors.c iobuf.c
+libutil_a_SOURCES = logger.c fileutil.c miscutil.c strgutil.c  \
+                   ttyio.c  argparse.c memory.c secmem.c errors.c iobuf.c
 
 
 
index 9ca5f0f..1f01357 100644 (file)
@@ -1,8 +1,14 @@
-# Makefile.in generated automatically by automake 1.0 from Makefile.am
+# Makefile.in generated automatically by automake 1.2d from Makefile.am
 
-# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
 
 SHELL = /bin/sh
@@ -32,202 +38,248 @@ pkgincludedir = $(includedir)/@PACKAGE@
 
 top_builddir = ..
 
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 transform = @program_transform_name@
 
-INCLUDES = -I$(top_srcdir)/include
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CIPHER_EXTRA_DIST = @CIPHER_EXTRA_DIST@
+CIPHER_EXTRA_OBJS = @CIPHER_EXTRA_OBJS@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+G10_LOCALEDIR = @G10_LOCALEDIR@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTLSUB = @INTLSUB@
+MPI_EXTRA_ASM_OBJS = @MPI_EXTRA_ASM_OBJS@
+MSGFMT = @MSGFMT@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
 
-noinst_LIBRARIES = util
+INCLUDES = -I.. -I$(top_srcdir)/include
 
-util_SOURCES = logger.c fileutil.c miscutil.c strgutil.c  \
-              ttyio.c  argparse.c memory.c secmem.c errors.c iobuf.c
-mkinstalldirs = $(top_srcdir)/scripts/mkinstalldirs
-CONFIG_HEADER = ../config.h
-LIBRARIES = $(noinst_LIBRARIES)
+noinst_LIBRARIES = libutil.a
 
-noinst_LIBFILES = libutil.a
+libutil_a_SOURCES = logger.c fileutil.c miscutil.c strgutil.c  \
+                   ttyio.c  argparse.c memory.c secmem.c errors.c iobuf.c
+mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs
+CONFIG_HEADER = ../config.h
+CONFIG_CLEAN_FILES = 
+LIBRARIES =  $(noinst_LIBRARIES)
 
-CC = @CC@
-LEX = @LEX@
-YACC = @YACC@
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(LDFLAGS) -o $@
-util_LIBADD =
-util_OBJECTS = logger.o fileutil.o miscutil.o strgutil.o ttyio.o \
+libutil_a_LIBADD = 
+libutil_a_OBJECTS =  logger.o fileutil.o miscutil.o strgutil.o ttyio.o \
 argparse.o memory.o secmem.o errors.o iobuf.o
-EXTRA_util_SOURCES =
-LIBFILES =  libutil.a
 AR = ar
-RANLIB = @RANLIB@
-DIST_COMMON = Makefile.am Makefile.in
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  Makefile.am Makefile.in
 
 
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
-DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
-       $(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
 TAR = tar
-DEP_FILES = $(srcdir)/.deps/argparse.P $(srcdir)/.deps/errors.P \
-$(srcdir)/.deps/fileutil.P $(srcdir)/.deps/iobuf.P \
-$(srcdir)/.deps/logger.P $(srcdir)/.deps/memory.P \
-$(srcdir)/.deps/miscutil.P $(srcdir)/.deps/secmem.P \
-$(srcdir)/.deps/strgutil.P $(srcdir)/.deps/ttyio.P
-SOURCES = $(util_SOURCES)
-OBJECTS = $(util_OBJECTS)
+GZIP = --best
+DEP_FILES =  .deps/argparse.P .deps/errors.P .deps/fileutil.P \
+.deps/iobuf.P .deps/logger.P .deps/memory.P .deps/miscutil.P \
+.deps/secmem.P .deps/strgutil.P .deps/ttyio.P
+SOURCES = $(libutil_a_SOURCES)
+OBJECTS = $(libutil_a_OBJECTS)
 
 default: all
 
+.SUFFIXES:
+.SUFFIXES: .S .c .o .s
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile
 
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in
-       cd $(top_srcdir) && automake $(subdir)/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-Makefile: $(top_builddir)/config.status Makefile.in
-       cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
 
 mostlyclean-noinstLIBRARIES:
 
 clean-noinstLIBRARIES:
-       rm -f $(noinst_LIBFILES)
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
 
 distclean-noinstLIBRARIES:
 
 maintainer-clean-noinstLIBRARIES:
 
 .c.o:
-       $(COMPILE) $<
+       $(COMPILE) -c $<
+
+.s.o:
+       $(COMPILE) -c $<
+
+.S.o:
+       $(COMPILE) -c $<
 
 mostlyclean-compile:
-       rm -f *.o core
+       -rm -f *.o core
 
 clean-compile:
 
 distclean-compile:
-       rm -f *.tab.c
+       -rm -f *.tab.c
 
 maintainer-clean-compile:
-$(util_OBJECTS): ../config.h
 
-libutil.a: $(util_OBJECTS) $(util_LIBADD)
-       rm -f libutil.a
-       $(AR) cru libutil.a $(util_OBJECTS) $(util_LIBADD)
+libutil.a: $(libutil_a_OBJECTS) $(libutil_a_DEPENDENCIES)
+       -rm -f libutil.a
+       $(AR) cru libutil.a $(libutil_a_OBJECTS) $(libutil_a_LIBADD)
        $(RANLIB) libutil.a
 
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
-
 tags: TAGS
 
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
-       here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
+ID: $(HEADERS) $(SOURCES) $(LISP)
+       here=`pwd` && cd $(srcdir) \
+         && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$(LISP)$$tags" \
+         || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $(SOURCES) $(HEADERS) $(LISP) -o $$here/TAGS)
 
 mostlyclean-tags:
 
 clean-tags:
 
 distclean-tags:
-       rm -f TAGS ID
+       -rm -f TAGS ID
 
 maintainer-clean-tags:
 
-subdir = util
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-distdir: $(DEP_DISTFILES)
-       @for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
+
+subdir = util
+
+distdir: $(DISTFILES)
+       here=`cd $(top_builddir) && pwd`; \
+       top_distdir=`cd $(top_distdir) && pwd`; \
+       distdir=`cd $(distdir) && pwd`; \
+       cd $(top_srcdir) \
+         && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu util/Makefile
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
          test -f $(distdir)/$$file \
-         || ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
-         || cp -p $(srcdir)/$$file $(distdir)/$$file; \
+         || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+         || cp -p $$d/$$file $(distdir)/$$file; \
        done
 
-# This fragment is probably only useful for maintainers.  It relies on
-# GNU make and gcc.  It is only included in the generated Makefile.in
-# if `automake' is not passed the `--include-deps' flag.
+MKDEP = $(CC) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 
-MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-
--include $(srcdir)/.deps/.P
-$(srcdir)/.deps/.P: $(BUILT_SOURCES)
-       cd $(srcdir) && test -d .deps || mkdir .deps
+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
+-include .deps/.P
+.deps/.P: $(BUILT_SOURCES)
        echo > $@
 
 -include $(DEP_FILES)
-$(DEP_FILES): $(srcdir)/.deps/.P
-
-$(srcdir)/.deps/%.P: $(srcdir)/%.c
-       @echo "mkdeps $< > $@"
-       @re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
-         $(MKDEP) $< | sed "$$re" > $@-tmp
-       @if test -n "$o"; then                  \
-         sed 's/\.o:/$$o:/' $@-tmp > $@;       \
-         rm $@-tmp;                            \
-       else                                    \
-         mv $@-tmp $@;                         \
-       fi
-
-# End of maintainer-only section
-info:
 
-dvi:
+mostlyclean-depend:
 
-check: all
+clean-depend:
 
-installcheck:
+distclean-depend:
 
-install-exec:
+maintainer-clean-depend:
+       -rm -rf .deps
 
-install-data:
+.deps/%.P: %.c
+       @echo "Computing dependencies for $<..."
+       @o='o'; \
+       test -n "$o" && o='$$o'; \
+       $(MKDEP) $< >$@.tmp \
+         && sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
+         && rm -f $@.tmp
+info:
+dvi:
+check: all
+       $(MAKE)
+installcheck:
+install-exec: 
+       @$(NORMAL_INSTALL)
+
+install-data: 
+       @$(NORMAL_INSTALL)
 
 install: install-exec install-data all
        @:
 
-uninstall:
+uninstall: 
 
-all: $(LIBFILES) Makefile
+all: Makefile $(LIBRARIES)
 
 install-strip:
-       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
+       $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
 installdirs:
 
 
 mostlyclean-generic:
-       test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-       test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       rm -f Makefile $(DISTCLEANFILES)
-       rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
+       -rm -f Makefile $(DISTCLEANFILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
-       test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-       test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 mostlyclean:  mostlyclean-noinstLIBRARIES mostlyclean-compile \
-               mostlyclean-tags mostlyclean-generic
+               mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
-clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
-               mostlyclean
+clean:  clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
+               clean-generic mostlyclean
 
 distclean:  distclean-noinstLIBRARIES distclean-compile distclean-tags \
-               distclean-generic clean
-       rm -f config.status
+               distclean-depend distclean-generic clean
+       -rm -f config.status
 
 maintainer-clean:  maintainer-clean-noinstLIBRARIES \
                maintainer-clean-compile maintainer-clean-tags \
-               maintainer-clean-generic distclean
+               maintainer-clean-depend maintainer-clean-generic \
+               distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
 
@@ -235,13 +287,12 @@ maintainer-clean:  maintainer-clean-noinstLIBRARIES \
 clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
 mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir info dvi check installcheck \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
+distclean-depend clean-depend maintainer-clean-depend info dvi \
+installcheck install-exec install-data install uninstall all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
-.SUFFIXES:
-.SUFFIXES: .c .o
 
 # 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.
index 097a71f..a08e24a 100644 (file)
@@ -59,7 +59,7 @@ static unsigned max_alloced;
 static unsigned cur_alloced;
 static unsigned max_blocks;
 static unsigned cur_blocks;
-
+static int disable_secmem;
 
 static void
 lock_pool( void *p, size_t n )
@@ -94,12 +94,15 @@ init_pool( size_t n)
 {
     poolsize = n;
 
+    if( disable_secmem )
+       log_bug("secure memory is disabled");
+
   #if HAVE_MMAP && defined(MAP_ANONYMOUS)
     poolsize = (poolsize + 4095) & ~4095;
     pool = mmap( 0, poolsize, PROT_READ|PROT_WRITE,
                              MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
     if( pool == (void*)-1 )
-       log_error("can´t mmap pool of %u bytes: %s - using malloc\n",
+       log_error("can't mmap pool of %u bytes: %s - using malloc\n",
                            (unsigned)poolsize, strerror(errno));
     else {
        pool_is_mmapped = 1;
@@ -110,7 +113,7 @@ init_pool( size_t n)
     if( !pool_okay ) {
        pool = malloc( poolsize );
        if( !pool )
-           log_fatal("can´t allocate memory pool of %u bytes\n",
+           log_fatal("can't allocate memory pool of %u bytes\n",
                                                       (unsigned)poolsize);
        else
            pool_okay = 1;
@@ -131,12 +134,16 @@ compress_pool(void)
 void
 secmem_init( size_t n )
 {
-    if( n < DEFAULT_POOLSIZE )
-       n = DEFAULT_POOLSIZE;
-    if( !pool_okay )
-       init_pool(n);
-    else
-       log_error("Oops, secure memory pool already initialized\n");
+    if( !n )
+       disable_secmem=1;
+    else {
+       if( n < DEFAULT_POOLSIZE )
+           n = DEFAULT_POOLSIZE;
+       if( !pool_okay )
+           init_pool(n);
+       else
+           log_error("Oops, secure memory pool already initialized\n");
+    }
 }
 
 
@@ -235,6 +242,8 @@ secmem_term()
 void
 secmem_dump_stats()
 {
+    if( disable_secmem )
+       return;
     fprintf(stderr,
                "secmem usage: %u/%u bytes in %u/%u blocks of pool %lu/%lu\n",
                cur_alloced, max_alloced, cur_blocks, max_blocks,