diff --git a/lang/cl/mkerrcodes.awk b/lang/cl/mkerrcodes.awk index ae29043..9a1fc18 100644 --- a/lang/cl/mkerrcodes.awk +++ b/lang/cl/mkerrcodes.awk @@ -1,154 +1,154 @@ # mkerrcodes.awk # Copyright (C) 2004, 2005, 2006 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the lisp source files that are the output # of mkerrcodes.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkerrcodes.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkerrcodes.awk program. # # Certain portions of the mkerrcodes.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkerrcodes.awk. We call these the "data" portions. The rest of the # mkerrcodes.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkerrcodes.awk never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkerrcodes.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkerrcodes.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # The input file is in the following format: # [CODE SYMBOL...] # @errnos@ # [CODE SYMBOL...] # # The difference between the sections is how symbol is transformed. # The second section gets GPG_ERR_ prepended before processing. # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. BEGIN { FS="[ \t]+"; print ";;;; Output of mkerrcodes.awk. DO NOT EDIT."; print ""; print ";;; Copyright (C) 2006 g10 Code GmbH"; print ";;;"; print ";;; This file is part of libgpg-error."; print ";;;"; print ";;; libgpg-error is free software; you can redistribute it and/or"; print ";;; modify it under the terms of the GNU Lesser General Public License"; print ";;; as published by the Free Software Foundation; either version 2.1 of"; print ";;; the License, or (at your option) any later version."; print ";;;"; print ";;; libgpg-error is distributed in the hope that it will be useful, but"; print ";;; WITHOUT ANY WARRANTY; without even the implied warranty of"; print ";;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU"; print ";;; Lesser General Public License for more details."; print ";;;"; print ";;; You should have received a copy of the GNU Lesser General Public"; print ";;; License along with libgpg-error; if not, write to the Free"; print ";;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA"; print ";;; 02111-1307, USA."; print ""; header = 1; errnos = 0; } /^#/ { next; } header { if (errnos) { if ($1 ~ /^[0123456789]+$/) { header = 0; print ""; print " ;; The following error codes map system errors."; } } else { if ($1 ~ /^[0123456789]+$/) { header = 0; print "(in-package :gpg-error)"; print ""; print ";;; The error code type gpg-err-code-t."; print ""; print ";;; This is used for system error codes."; print "(defconstant +gpg-err-system-error+ (ash 1 15))"; print ""; print ";;; This is one more than the largest allowed entry."; print "(defconstant +gpg-err-code-dim+ 65536)"; print ""; print ";;; A helper macro to have the keyword values evaluated."; print "(defmacro defcenum-eval (type doc &rest vals)"; print " `(defcenum ,type ,doc"; print " ,@(loop for v in vals"; print " collect `(,(first v) ,(eval (second v))))))"; print ""; print "(defcenum-eval gpg-err-code-t"; print " \"The GPG error code type.\""; } } } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; # The following can happen for GPG_ERR_CODE_DIM. if ($1 == "") next; if (/^@errnos@$/) { header = 1; errnos = 1; next; } $2 = tolower($2); gsub ("_", "-", $2); if (errnos) print " (:gpg-err-" $2 " (logior +gpg-err-system-error+ " $1 "))"; else print " (:" $2 " " $1 ")"; } END { # I am very sorry to break lisp coding style here. print ")"; } diff --git a/src/Makefile.am b/src/Makefile.am index ce1b882..f2590cb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,356 +1,356 @@ # Makefile.am for libgpg-error. # Copyright (C) 2003, 2004, 2014 g10 Code GmbH # # This file is part of libgpg-error. # # libgpg-error is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2.1 of the # License, or (at your option) any later version. # # libgpg-error 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 Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see . # SPDX-License-Identifier: LGPL-2.1+ # # We distribute the generated sources err-sources.h and err-codes.h, # because they are needed to build the po directory, and they don't # depend on the configuration anyway. # if HAVE_W32CE_SYSTEM gpg_extra_headers = gpg-extra/errno.h extra_cppflags = -idirafter gpg-extra else gpg_extra_headers = extra_cppflags = endif localedir = $(datadir)/locale bin_PROGRAMS = gpg-error if HAVE_W32_SYSTEM noinst_PROGRAMS = gen-w32-lock-obj else noinst_PROGRAMS = gen-posix-lock-obj endif # Distributed lock object definitions for cross compilation. lock_obj_pub = \ syscfg/lock-obj-pub.aarch64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.aarch64-unknown-linux-gnu_ilp32.h \ syscfg/lock-obj-pub.aarch64-apple-darwin.h \ syscfg/lock-obj-pub.alpha-unknown-linux-gnu.h \ syscfg/lock-obj-pub.arm-unknown-linux-androideabi.h \ syscfg/lock-obj-pub.arm-unknown-linux-gnueabi.h \ syscfg/lock-obj-pub.arm-apple-darwin.h \ syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h \ syscfg/lock-obj-pub.i386-apple-darwin.h \ syscfg/lock-obj-pub.i686-unknown-gnu.h \ syscfg/lock-obj-pub.i686-unknown-kfreebsd-gnu.h \ syscfg/lock-obj-pub.i686-unknown-linux-gnu.h \ syscfg/lock-obj-pub.m68k-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mips-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mips64el-unknown-linux-gnuabi64.h \ syscfg/lock-obj-pub.mipsel-unknown-linux-gnu.h \ syscfg/lock-obj-pub.nios2-unknown-linux-gnu.h \ syscfg/lock-obj-pub.or1k-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc64le-unknown-linux-gnu.h \ syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h \ syscfg/lock-obj-pub.riscv64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.riscv32-unknown-linux-gnu.h \ syscfg/lock-obj-pub.s390x-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sh3-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sh4-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sparc-unknown-linux-gnu.h \ syscfg/lock-obj-pub.sparc64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.x86_64-apple-darwin.h \ syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h \ syscfg/lock-obj-pub.x86_64-unknown-linux-musl.h \ syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h \ syscfg/lock-obj-pub.ia64-unknown-linux-gnu.h \ syscfg/lock-obj-pub.mingw32.h lib_LTLIBRARIES = libgpg-error.la nodist_include_HEADERS = gpg-error.h gpgrt.h dist_bin_SCRIPTS = gpgrt-config bin_SCRIPTS = gpg-error-config m4datadir = $(datadir)/aclocal m4data_DATA = gpg-error.m4 gpgrt.m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gpg-error.pc EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \ mkerrnos.awk errnos.in README \ mkerrcodes.awk mkerrcodes1.awk mkerrcodes2.awk mkerrcodes.c \ mkheader.c gpg-error.h.in mkw32errmap.c w32-add.h w32ce-add.h \ err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 gpgrt.m4 \ gpg-error.vers gpg-error.def.in \ versioninfo.rc.in gpg-error.w32-manifest.in \ gpg-error-config-test.sh gpg-error.pc.in \ $(lock_obj_pub) BUILT_SOURCES = $(srcdir)/err-sources.h $(srcdir)/err-codes.h \ code-to-errno.h code-from-errno.h \ err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-error.h gpgrt.h \ gpg-error.def mkw32errmap.map.c tmp_files = _mkerrcodes.h _gpg-error.def.h mkw32errmap.tab.h mkw32errmap.map.c CLEANFILES = code-to-errno.h code-from-errno.h \ gpg-error.h gpgrt.h \ mkerrcodes$(EXEEXT_FOR_BUILD) mkerrcodes.h gpg-error.def mkw32errmap.tab.h \ mkw32errmap.map.c err-sources-sym.h err-codes-sym.h errnos-sym.h \ gpg-extra/errno.h mkheader$(EXEEXT_FOR_BUILD) \ gpg-error-config gpg-error-config-test.log \ $(tmp_files) lock-obj-pub.native.h MAINTAINERCLEANFILES = $(srcdir)/err-sources.h $(srcdir)/err-codes.h TESTS = gpg-error-config-test.sh # # {{{ Begin Windows part # if HAVE_W32_SYSTEM arch_sources = w32-gettext.c w32-lock.c w32-lock-obj.h w32-thread.c \ w32-iconv.c w32-estream.c w32-reg.c spawn-w32.c RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -DLOCALEDIR=\"$(localedir)\" $(AM_CPPFLAGS) $(CPPFLAGS) LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE) SUFFIXES = .rc .lo .rc.lo: $(LTRCCOMPILE) -i "$<" -o "$@" gpg_error_res = versioninfo.lo no_undefined = -no-undefined export_symbols = -export-symbols gpg-error.def # i686-w64-mingw32.gcc version 4.9.1 takes the long long helper # functions from libgcc_s_sjlj-1.dll and not from a static libgcc. As # a plain C program we do not use exception handler and thus there is # no need to use this DLL. Thus we force gcc to link that statically. extra_ltoptions = -XCClinker -static-libgcc versioninfo.lo : gpg-error.w32-manifest install-def-file: gpg-error.def -$(INSTALL) -d $(DESTDIR)$(libdir) $(INSTALL) gpg-error.def $(DESTDIR)$(libdir)/gpg-error.def uninstall-def-file: -rm $(DESTDIR)$(libdir)/gpg-error.def libgpg_error_la_DEPENDENCIES = $(gpg_error_res) gpg-error.def intllibs = socklibs = -lws2_32 # # }}} End Windows part # else # # {{{ Begin Unix part # arch_sources = posix-lock.c posix-lock-obj.h posix-thread.c spawn-posix.c gpg_error_res = no_undefined = export_symbols = extra_ltoptions = install-def-file: uninstall-def-file: intllibs = @LTLIBINTL@ socklibs = endif # # }}} End Unix part # if HAVE_LD_VERSION_SCRIPT libgpg_error_vers_opt = -Wl,--version-script=$(srcdir)/gpg-error.vers else libgpg_error_vers_opt = endif libgpg_error_la_LDFLAGS = \ $(no_undefined) $(export_symbols) $(libgpg_error_vers_opt) \ $(extra_ltoptions) -version-info \ @LIBGPG_ERROR_LT_CURRENT@:@LIBGPG_ERROR_LT_REVISION@:@LIBGPG_ERROR_LT_AGE@ libgpg_error_la_SOURCES = gettext.h $(arch_sources) \ gpgrt-int.h init.c init.h version.c lock.h thread.h \ estream.c estream-printf.c estream-printf.h \ strsource.c strerror.c code-to-errno.c code-from-errno.c \ visibility.c visibility.h \ sysutils.c \ syscall-clamp.c \ logging.c \ b64dec.c b64enc.c \ argparse.c nodist_libgpg_error_la_SOURCES = gpg-error.h # libgpg_error_la_DEPENDENCIES = \ # $(srcdir)/gpg-error.vers # Note that RCCOMPILE needs the same defines as ..._la_CPPFLAGS but # without the extra_cppflags because they may include am -idirafter # which is not supported by the RC compiler. libgpg_error_la_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" $(extra_cppflags) libgpg_error_la_LIBADD = $(gpg_error_res) $(intllibs) $(socklibs) $(LIBTHREAD) gpg_error_SOURCES = strsource-sym.c strerror-sym.c gpg-error.c gpg_error_CPPFLAGS = -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLOCALEDIR=\"$(localedir)\" $(extra_cppflags) gpg_error_LDADD = libgpg-error.la $(LTLIBINTL) # We build err-sources.h and err-codes.h in the source directory. # This is needed because gettext does only look into the source # directory to find the files listed in po/POTFILE.in. To make these # rules work we also need to depend on Makefile.am and not on the # generated files Makefile.in or Makefile. $(srcdir)/err-sources.h: Makefile.am mkstrtable.awk err-sources.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 \ $(srcdir)/err-sources.h.in >$@ err-sources-sym.h: Makefile mkstrtable.awk err-sources.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ $(srcdir)/err-sources.h.in >$@ $(srcdir)/err-codes.h: Makefile.am mkstrtable.awk err-codes.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=3 \ $(srcdir)/err-codes.h.in >$@ err-codes-sym.h: Makefile mkstrtable.awk err-codes.h.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ $(srcdir)/err-codes.h.in >$@ code-to-errno.h: Makefile mkerrnos.awk errnos.in $(AWK) -f $(srcdir)/mkerrnos.awk $(srcdir)/errnos.in >$@ # It is correct to use $(CPP). We want the host's idea of the error codes. mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers) $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@ $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \ $(AWK) -f $(srcdir)/mkerrcodes.awk >$@ -rm _$@ if HAVE_W32CE_SYSTEM # It is correct to use $(CPP). We want the host's idea of the error codes. mkw32errmap.tab.h: Makefile mkw32errmap.c $(CPP) -DRESOLVE_MACROS $(srcdir)/mkw32errmap.c | \ grep '{&mkw32errmap_marker' >$@ mkw32errmap.map.c: mkw32errmap$(EXEEXT_FOR_BUILD) ./mkw32errmap$(EXEEXT_FOR_BUILD) --map > $@ gpg-extra/errno.h: mkw32errmap$(EXEEXT_FOR_BUILD) -$(MKDIR_P) gpg-extra ./mkw32errmap$(EXEEXT_FOR_BUILD) > $@ else mkw32errmap.map.c: echo "/*dummy*/" > $@ endif # We use CC proper for preprocessing thus we have to convince it that # the data is really to be preprocessed. gpg-error.def: Makefile gpg-error.def.in cat $(srcdir)/gpg-error.def.in >_$@.h $(CPP) $(DEFAULT_INCLUDES) $(INCLUDES) $(extra_cppflags) _$@.h | \ grep -v '^#' >$@ -rm _$@.h # It is correct to use $(CC_FOR_BUILD) here. We want to run the # program at build time. mkerrcodes$(EXEEXT_FOR_BUILD): mkerrcodes.c mkerrcodes.h Makefile $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkerrcodes.c if HAVE_W32CE_SYSTEM # It is correct to use $(CC_FOR_BUILD) here. We want to run the # program at build time. mkw32errmap$(EXEEXT_FOR_BUILD): mkw32errmap.c mkw32errmap.tab.h Makefile $(CC_FOR_BUILD) -I. -I$(srcdir) -o $@ $(srcdir)/mkw32errmap.c endif code-from-errno.h: mkerrcodes$(EXEEXT_FOR_BUILD) Makefile ./mkerrcodes$(EXEEXT_FOR_BUILD) | $(AWK) -f $(srcdir)/mkerrcodes2.awk >$@ errnos-sym.h: Makefile mkstrtable.awk errnos.in $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ - -v prefix=GPG_ERR_ -v namespace=errnos_ \ + -v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \ $(srcdir)/errnos.in >$@ mkheader$(EXEEXT_FOR_BUILD): mkheader.c Makefile $(CC_FOR_BUILD) -g -O0 -I. -I$(srcdir) -o $@ $(srcdir)/mkheader.c parts_of_gpg_error_h = \ gpg-error.h.in \ err-sources.h.in \ err-codes.h.in \ errnos.in \ w32-add.h \ w32ce-add.h \ $(lock_obj_pub) # If we are cross-compiling or building on Windows we better make sure # that no stale native lock include file will be found by mkheader. if FORCE_USE_SYSCFG pre_mkheader_cmds = if test -f lock-obj-pub.native.h; \ then rm lock-obj-pub.native.h; fi mkheader_opts = --cross else pre_mkheader_cmds = : mkheader_opts = parts_of_gpg_error_h += ./lock-obj-pub.native.h ./lock-obj-pub.native.h: Makefile gen-posix-lock-obj$(EXEEXT) posix-lock-obj.h ./gen-posix-lock-obj >$@ endif # We also depend on versioninfo.rc because that is build by # config.status and thus has up-to-date version numbers. gpg-error.h: Makefile mkheader$(EXEEXT_FOR_BUILD) $(parts_of_gpg_error_h) \ versioninfo.rc ../config.h $(pre_mkheader_cmds) ./mkheader$(EXEEXT_FOR_BUILD) $(mkheader_opts) \ $(host_triplet) $(srcdir)/gpg-error.h.in \ ../config.h $(PACKAGE_VERSION) $(VERSION_NUMBER) >$@ gpgrt.h: gpg-error.h cp gpg-error.h gpgrt.h gpg-error-config: gpgrt-config gpg-error-config-old @echo $(ECHO_N) "Confirm gpg-error-config works... $(ECHO_C)" @if $(srcdir)/gpg-error-config-test.sh --old-new; then \ echo "good"; \ else \ echo "no"; \ echo "*** Please report to with gpg-error-config-test.log"; \ fi cp gpg-error-config-old $@ install-data-local: if HAVE_W32CE_SYSTEM -$(MKDIR_P) "$(DESTDIR)$(includedir)/gpg-extra" $(INSTALL_DATA) gpg-extra/errno.h \ "$(DESTDIR)$(includedir)/gpg-extra/errno.h" else : endif diff --git a/src/mkerrcodes.awk b/src/mkerrcodes.awk index 46d436c..e9c857c 100644 --- a/src/mkerrcodes.awk +++ b/src/mkerrcodes.awk @@ -1,99 +1,99 @@ # mkerrcodes.awk # Copyright (C) 2004, 2005 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the C source files that are the output # of mkerrcodes.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkerrcodes.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkerrcodes.awk program. # # Certain portions of the mkerrcodes.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkerrcodes.awk. We call these the "data" portions. The rest of the # mkerrcodes.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkerrcodes.h never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkerrcodes.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkerrcodes.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # This script outputs an intermediate file that contains the following output: # static struct # { # int err; # const char *err_sym; # } err_table[] = # { # { 7, "GPG_ERR_E2BIG" }, # [...] # }; # # The input file is a list of possible system errors, followed by a GPG_ERR_* name: # # 7 GPG_ERR_E2BIG # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. BEGIN { FS="[ \t]+GPG_ERR_"; print "/* Output of mkerrcodes.awk. DO NOT EDIT. */"; print ""; header = 1; } /^#/ { next; } header { if (! /^[ \t]*$/) { header = 0; print "static struct"; print " {"; print " int err;"; print " const char *err_sym;"; print " } err_table[] = "; print "{"; } else print; } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; print " { " $1 ", \"GPG_ERR_" $2 "\" },"; } END { print "};"; } diff --git a/src/mkerrcodes1.awk b/src/mkerrcodes1.awk index a771a73..4578e29 100644 --- a/src/mkerrcodes1.awk +++ b/src/mkerrcodes1.awk @@ -1,96 +1,96 @@ # mkerrcodes.awk # Copyright (C) 2003, 2004 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the C source files that are the output # of mkerrcodes.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkerrcodes.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkerrcodes.awk program. # # Certain portions of the mkerrcodes.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkerrcodes.awk. We call these the "data" portions. The rest of the # mkerrcodes.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkerrcodes.h never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkerrcodes.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkerrcodes.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # This script outputs an intermediate file that contains the following block # for each error value symbol in the input file (example for EINVAL): # # #ifdef EINVAL # EINVAL GPG_ERR_EINVAL # #endif # # The input file is a list of possible system errors in the column errnoidx # (defaults to 2). # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. BEGIN { FS="[\t]+"; header = 1; if (errnoidx == 0) errnoidx = 2; print "/* Output of mkerrcodes.awk. DO NOT EDIT. */"; print ""; } /^#/ { next; } header { if ($1 ~ /^[0-9]/) { print "#include "; print "#ifdef _WIN32"; print "#include "; print "#endif"; print ""; header = 0; } else print; } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; print "#ifdef " $errnoidx; print $errnoidx "\tGPG_ERR_" $errnoidx; print "#endif"; print "#ifdef WSA" $errnoidx; print "WSA" $errnoidx "\tGPG_ERR_" $errnoidx; print "#endif"; } diff --git a/src/mkerrcodes2.awk b/src/mkerrcodes2.awk index ea58503..188f7a4 100644 --- a/src/mkerrcodes2.awk +++ b/src/mkerrcodes2.awk @@ -1,134 +1,134 @@ # mkstrtable.awk # Copyright (C) 2003 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the C source files that are the output # of mkerrcodes2.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkerrcodes2.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkerrcodes2.awk program. # # Certain portions of the mkerrcodes2.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkerrcodes2.awk. We call these the "data" portions. The rest of the # mkerrcodes2.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkstrtable.h never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkerrcodes2.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkerrcodes2.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # This script outputs a source file that does define the following # symbols: # # static const char msgstr[]; # A string containing all messages in the list. # # static const int msgidx[]; # A list of index numbers, one for each message, that points to the # beginning of the string in msgstr. # # msgidxof (code); # A macro that maps code numbers to idx numbers. If a DEFAULT MESSAGE # is provided (see below), its index will be returned for unknown codes. # Otherwise -1 is returned for codes that do not appear in the list. # You can lookup the message with code CODE with: # msgstr + msgidx[msgidxof (code)]. # # The input file has the following format: # CODE1 MESSAGE1 (Code number, , message string) # CODE2 MESSAGE2 (Code number, , message string) # ... # CODEn MESSAGEn (Code number, , message string) # DEFAULT MESSAGE (, fall-back message string) # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. The last line is optional; if no DEFAULT # MESSAGE is given, msgidxof will return the number -1 for unknown # index numbers. BEGIN { # msg holds the number of messages. msg = 0; print "/* Output of mkerrcodes2.awk. DO NOT EDIT. */"; print ""; header = 1; } /^#/ { next; } header { if ($1 ~ /^[0123456789]+$/) { print "static const int err_code_from_index[] = {"; header = 0; } else print; } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; # Print the string msgstr line by line. We delay output by one line to be able # to treat the last line differently (see END). print " " $2 ","; # Remember the error value and index of each error code. code[msg] = $1; pos[msg] = $2; msg++; } END { print "};"; print ""; print "#define errno_to_idx(code) (0 ? -1 \\"; # Gather the ranges. skip = code[0]; start = code[0]; stop = code[0]; for (i = 1; i < msg; i++) { if (code[i] == stop + 1) stop++; else { print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \ skip ") \\"; skip += code[i] - stop - 1; start = code[i]; stop = code[i]; } } print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \ skip ") \\"; print " : -1)"; } diff --git a/src/mkerrnos.awk b/src/mkerrnos.awk index f79df66..15b1aad 100644 --- a/src/mkerrnos.awk +++ b/src/mkerrnos.awk @@ -1,104 +1,104 @@ # mkerrnos.awk # Copyright (C) 2003, 2004 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the C source files that are the output # of mkerrnos.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkerrnos.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkerrnos.awk program. # # Certain portions of the mkerrnos.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkerrnos.awk. We call these the "data" portions. The rest of the # mkerrnos.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkerrnos.h never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkerrnos.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkerrnos.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # This script outputs a source file that does define the following # symbols: # # static const int err_code_to_errno[]; # A mapping of gpg_err_code_t numbers to system errno. The index of an # error code in the table can be obtained after removing the system error # code indication bit. # # The input file is a list of possible system errors in the column errnoidx # (defaults to 2). # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. BEGIN { FS="[\t]+"; header = 1; if (errnoidx == 0) errnoidx = 2; print "/* Output of mkerrnos.awk. DO NOT EDIT. */"; print ""; } /^#/ { next; } header { if ($1 ~ /^[0-9]/) { print "#include "; print "#ifdef _WIN32"; print "#include "; print "#endif"; print ""; print "static const int err_code_to_errno [] = {"; header = 0; } else print; } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; print "#ifdef " $errnoidx; print " " $errnoidx ","; print "#else"; print "#ifdef WSA" $errnoidx; print " WSA" $errnoidx ","; print "#else"; print " 0,"; print "#endif"; print "#endif"; } END { print "};"; } diff --git a/src/mkstrtable.awk b/src/mkstrtable.awk index c9de9c1..285e45f 100644 --- a/src/mkstrtable.awk +++ b/src/mkstrtable.awk @@ -1,189 +1,189 @@ # mkstrtable.awk # Copyright (C) 2003, 2004, 2008 g10 Code GmbH # # 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 of # the License, 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. # # As a special exception, g10 Code GmbH gives unlimited permission to # copy, distribute and modify the C source files that are the output # of mkstrtable.awk. You need not follow the terms of the GNU General # Public License when using or distributing such scripts, even though # portions of the text of mkstrtable.awk appear in them. The GNU # General Public License (GPL) does govern all other use of the material # that constitutes the mkstrtable.awk program. # # Certain portions of the mkstrtable.awk source text are designed to be # copied (in certain cases, depending on the input) into the output of # mkstrtable.awk. We call these the "data" portions. The rest of the # mkstrtable.awk source text consists of comments plus executable code # that decides which of the data portions to output in any given case. # We call these comments and executable code the "non-data" portions. # mkstrtable.h never copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of mkstrtable.awk # released by g10 Code GmbH. When you make and distribute a modified version # of mkstrtable.awk, you may extend this special exception to the GPL to # apply to your modified version as well, *unless* your modified version # has the potential to copy into its output some of the text that was the # non-data portion of the version that you started with. (In other words, # unless your change moves or copies text from the non-data portions to the # data portions.) If your modification has such potential, you must delete # any notice of this special exception to the GPL from your modified version. # This script outputs a source file that does define the following # symbols: # # static const char msgstr[]; # A string containing all messages in the list. # # static const int msgidx[]; # A list of index numbers, one for each message, that points to the # beginning of the string in msgstr. # # msgidxof (code); # A macro that maps code numbers to idx numbers. If a DEFAULT MESSAGE # is provided (see below), its index will be returned for unknown codes. # Otherwise -1 is returned for codes that do not appear in the list. # You can lookup the message with code CODE with: # msgstr + msgidx[msgidxof (code)]. # # The input file has the following format: # CODE1 ... MESSAGE1 (code nr, , something, , msg) # CODE2 ... MESSAGE2 (code nr, , something, , msg) # ... # CODEn ... MESSAGEn (code nr, , something, , msg) # ... DEFAULT-MESSAGE (, something, , fall-back msg) # # Comments (starting with # and ending at the end of the line) are removed, # as is trailing whitespace. The last line is optional; if no DEFAULT # MESSAGE is given, msgidxof will return the number -1 for unknown # index numbers. # # The field to be used is specified with the variable "textidx" on # the command line. It defaults to 2. # # The variable nogettext can be set to 1 to suppress gettext markers. # # The variable prefix can be used to prepend a string to each message. # -# The variable namespace can be used to prepend a string to each +# The variable pkg_namespace can be used to prepend a string to each # variable and macro name. BEGIN { FS = "[\t]+"; # cpos holds the current position in the message string. cpos = 0; # msg holds the number of messages. msg = 0; print "/* Output of mkstrtable.awk. DO NOT EDIT. */"; print ""; header = 1; if (textidx == 0) textidx = 2; # nogettext can be set to 1 to suppress gettext noop markers. } /^#/ { next; } header { if ($1 ~ /^[0123456789]+$/) { print "/* The purpose of this complex string table is to produce"; print " optimal code with a minimum of relocations. */"; print ""; - print "static const char " namespace "msgstr[] = "; + print "static const char " pkg_namespace "msgstr[] = "; header = 0; } else print; } !header { - sub (/\#.+/, ""); + sub (/#.+/, ""); sub (/[ ]+$/, ""); # Strip trailing space and tab characters. if (/^$/) next; # Print the string msgstr line by line. We delay output by one line to be able # to treat the last line differently (see END). if (last_msgstr) { if (nogettext) print " \"" last_msgstr "\" \"\\0\""; else print " gettext_noop (\"" last_msgstr "\") \"\\0\""; } last_msgstr = prefix $textidx; # Remember the error code and msgidx of each error message. code[msg] = $1; pos[msg] = cpos; cpos += length (last_msgstr) + 1; msg++; if ($1 == "") { has_default = 1; exit; } } END { if (has_default) coded_msgs = msg - 1; else coded_msgs = msg; if (nogettext) print " \"" last_msgstr "\";"; else print " gettext_noop (\"" last_msgstr "\");"; print ""; - print "static const int " namespace "msgidx[] ="; + print "static const int " pkg_namespace "msgidx[] ="; print " {"; for (i = 0; i < coded_msgs; i++) print " " pos[i] ","; print " " pos[coded_msgs]; print " };"; print ""; print "static GPG_ERR_INLINE int"; - print namespace "msgidxof (int code)"; + print pkg_namespace "msgidxof (int code)"; print "{"; print " return (0 ? 0"; # Gather the ranges. skip = code[0]; start = code[0]; stop = code[0]; for (i = 1; i < coded_msgs; i++) { if (code[i] == stop + 1) stop++; else { print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \ skip ")"; skip += code[i] - stop - 1; start = code[i]; stop = code[i]; } } print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \ skip ")"; if (has_default) print " : " stop + 1 " - " skip ");"; else print " : -1);"; print "}"; }