123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179 |
- 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 <https://www.gnu.org/licenses/>.
- # 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 <https://bugs.gnupg.org> 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 <errno.h>";
- print "#ifdef _WIN32";
- print "#include <winsock2.h>";
- 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, <tab>, message string)
- # CODE2 MESSAGE2 (Code number, <tab>, message string)
- # ...
- # CODEn MESSAGEn (Code number, <tab>, message string)
- # DEFAULT MESSAGE (<tab>, 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 <errno.h>";
- print "#ifdef _WIN32";
- print "#include <winsock2.h>";
- 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, <tab>, something, <tab>, msg)
- # CODE2 ... MESSAGE2 (code nr, <tab>, something, <tab>, msg)
- # ...
- # CODEn ... MESSAGEn (code nr, <tab>, something, <tab>, msg)
- # ... DEFAULT-MESSAGE (<tab>, something, <tab>, 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 "}";
- }
|